DIRECTORY
ThreeC4BaseDecl1Def,
Rope,
ThreeC4Support,
ThreeC4BaseDecl2Def,
ThreeC4BasicAbTypesDef,
ThreeC4ModItemAbGramDef;
ThreeC4ModItemImplImpl: CEDAR PROGRAM IMPORTS ThreeC4BaseDecl1Def, ThreeC4Support, ThreeC4BaseDecl2Def EXPORTS ThreeC4ModItemAbGramDef=
BEGIN
OPEN ThreeC4BaseDecl1Def, Rope, ThreeC4Support, ThreeC4BaseDecl2Def, ThreeC4BasicAbTypesDef, ThreeC4ModItemAbGramDef;
ModuleItemcedarItemsProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcedarItemsProdData ← NARROW[tree.data];
temp0 ← EqualRopes["True", "False"];
END
END;
ModuleItemcedarItemsProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcedarItemsProdData ← NARROW[tree.data];
temp1 ← BuildEmptyCode[];
temp0 ← BuildEmptyCode[];
END
END;
ModuleItemcedarItemsProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcedarItemsProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
ModuleItemcedarItemsProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcedarItemsProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
ModuleItemcedarItemsProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcedarItemsProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
ModuleItemcedarItemsProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcedarItemsProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
ModuleItemcedarItemsProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcedarItemsProdData ← NARROW[tree.data];
temp1 ← FakeCopyContextForConditional[context];
temp0 ← FakeCopyInt[first];
END
END;
ModuleItemcedarItemsProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcedarItemsProdData ← NARROW[tree.data];
temp0 ← treeData.CedarItems.procs.CollectModuleFunctionTypes[treeData.CedarItems, defFileName, context];
END
END;
ModuleItemcedarItemsProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcedarItemsProdData ← NARROW[tree.data];
temp0 ← treeData.CedarItems.procs.CollectModuleValueTypes[treeData.CedarItems, defFileName, context];
END
END;
ModuleItembaseItemsProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItembaseItemsProdData ← NARROW[tree.data];
temp0 ← EqualRopes["True", "False"];
END
END;
ModuleItembaseItemsProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItembaseItemsProdData ← NARROW[tree.data];
temp1 ← BuildEmptyCode[];
temp0 ← BuildEmptyCode[];
END
END;
ModuleItembaseItemsProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItembaseItemsProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
ModuleItembaseItemsProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItembaseItemsProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.BaseItems.procs.ImplFileCode[treeData.BaseItems, context, usage];
END
END;
ModuleItembaseItemsProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItembaseItemsProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.BaseItems.procs.DefFileCode[treeData.BaseItems, context, usage];
END
END;
ModuleItembaseItemsProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItembaseItemsProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
ModuleItembaseItemsProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItembaseItemsProdData ← NARROW[tree.data];
temp1 ← FakeCopyContextForConditional[context];
temp0 ← FakeCopyInt[first];
END
END;
ModuleItembaseItemsProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItembaseItemsProdData ← NARROW[tree.data];
temp0 ← treeData.BaseItems.procs.CollectModuleFunctionTypes[treeData.BaseItems, defFileName, context];
END
END;
ModuleItembaseItemsProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItembaseItemsProdData ← NARROW[tree.data];
temp0 ← treeData.BaseItems.procs.CollectModuleValueTypes[treeData.BaseItems, defFileName, context];
END
END;
ModuleItemabGramItemsProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemabGramItemsProdData ← NARROW[tree.data];
temp0 ← EqualRopes["True", "False"];
END
END;
ModuleItemabGramItemsProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemabGramItemsProdData ← NARROW[tree.data];
temp1 ← BuildEmptyCode[];
temp0 ← BuildEmptyCode[];
END
END;
ModuleItemabGramItemsProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemabGramItemsProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
ModuleItemabGramItemsProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemabGramItemsProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.AbGramItems.procs.ImplFileCode[treeData.AbGramItems, context, usage];
END
END;
ModuleItemabGramItemsProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemabGramItemsProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.AbGramItems.procs.DefFileCode[treeData.AbGramItems, context, usage];
END
END;
ModuleItemabGramItemsProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemabGramItemsProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
ModuleItemabGramItemsProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemabGramItemsProdData ← NARROW[tree.data];
temp1 ← FakeCopyContextForConditional[context];
temp0 ← FakeCopyInt[first];
END
END;
ModuleItemabGramItemsProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemabGramItemsProdData ← NARROW[tree.data];
temp0 ← treeData.AbGramItems.procs.CollectModuleFunctionTypes[treeData.AbGramItems, defFileName, context];
END
END;
ModuleItemabGramItemsProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemabGramItemsProdData ← NARROW[tree.data];
temp0 ← treeData.AbGramItems.procs.CollectModuleValueTypes[treeData.AbGramItems, defFileName, context];
END
END;
ModuleItemcGramItemsProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcGramItemsProdData ← NARROW[tree.data];
temp0 ← treeData.CGramItems.procs.TestLinkPresent[treeData.CGramItems];
END
END;
ModuleItemcGramItemsProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcGramItemsProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.CGramItems.procs.SyntaxFileCodes[treeData.CGramItems, context];
END
END;
ModuleItemcGramItemsProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcGramItemsProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.CGramItems.procs.LinkFileCode[treeData.CGramItems, context, usage];
END
END;
ModuleItemcGramItemsProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcGramItemsProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.CGramItems.procs.ImplFileCode[treeData.CGramItems, context, usage];
END
END;
ModuleItemcGramItemsProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcGramItemsProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
ModuleItemcGramItemsProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcGramItemsProdData ← NARROW[tree.data];
temp0 ← treeData.CGramItems.procs.CollectRightSideSymbols[treeData.CGramItems, context];
END
END;
ModuleItemcGramItemsProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcGramItemsProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.CGramItems.procs.CollectProductions[treeData.CGramItems, first, context];
END
END;
ModuleItemcGramItemsProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcGramItemsProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
ModuleItemcGramItemsProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemcGramItemsProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
ModuleItemgenTknProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemgenTknProdData ← NARROW[tree.data];
temp0 ← EqualRopes["True", "True"];
END
END;
ModuleItemgenTknProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemgenTknProdData ← NARROW[tree.data];
BEGIN
tkn: MesaCodeNode;
prod: MesaCodeNode;
prod ← BuildEmptyCode[];
tkn ← RopeCode2["%g: GenericToken = \"%g\" ;\N", IdFill[treeData.Identifier], CodeFill[RopeCode[RopeFromRopeNode[treeData.RopetknName]]]];
temp1 ← prod;
temp0 ← tkn;
END;
END
END;
ModuleItemgenTknProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemgenTknProdData ← NARROW[tree.data];
BEGIN
code: MesaCodeNode;
code ← RopeCode2["tknLinkArray[%g] ← Build%gNode;\N", CodeFill[RopeCode[RopeFromRopeNode[treeData.RopetknName]]], IdFill[treeData.Identifier]];
temp1 ← FakeUsageCopy[usage];
temp0 ← code;
END;
END
END;
ModuleItemgenTknProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemgenTknProdData ← NARROW[tree.data];
BEGIN
code: MesaCodeNode;
use5: UsageNode;
use4: UsageNode;
use3: UsageNode;
headerCode: MesaCodeNode;
buildImplCode: MesaCodeNode;
nameCode: MesaCodeNode;
use2: UsageNode;
use1: UsageNode;
name: NameNode;
name ← BuildName[treeData.Identifier];
use1 ← RecordGenericTokenUse[usage, name, Use.export, context];
use2 ← RecordGenericTokenUse[use1, name, Use.ref, context];
nameCode ← GetTypeCodeName[LookUpType[context, name]];
buildImplCode ← ConcatCode2[RopeCode2["Build%g: PUBLIC PROC[text: Rope.ROPE, firstCharPosition: INT] RETURNS[%g] =\N", CodeFill[nameCode], CodeFill[nameCode]], RopeCode1["\T{RETURN[NEW[%gBody←[text, firstCharPosition, Length[text]]]]};\N\N", CodeFill[nameCode]]];
headerCode ← RopeCode1["\N--%g\N\N", IdFill[treeData.Identifier]];
use3 ← RecordTypeUse[use2, LookUpType[context, BuildRopeName["ROPE"]]];
use4 ← RecordTypeUse[use3, LookUpType[context, BuildRopeName["INT"]]];
use5 ← RecordDefFileUse[use4, "Rope", Use.import];
code ← ConcatCode2[headerCode, buildImplCode];
temp1 ← use5;
temp0 ← code;
END;
END
END;
ModuleItemgenTknProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemgenTknProdData ← NARROW[tree.data];
BEGIN
code: MesaCodeNode;
use2: UsageNode;
use1: UsageNode;
headerCode: MesaCodeNode;
nodeCode: MesaCodeNode;
nodeBodyCode: MesaCodeNode;
codeName: MesaCodeNode;
name: NameNode;
name ← BuildName[treeData.Identifier];
codeName ← GetTypeCodeName[LookUpType[context, name]];
nodeBodyCode ← ConcatCode3[RopeCode1["%gBody: TYPE = RECORD[\N", CodeFill[codeName]], RopeCode["\Ttext: Rope.ROPE,\N"], RopeCode["\Tposition, length: INT];\N\N"]];
nodeCode ← RopeCode2["%g: TYPE = REF %gBody;\N", CodeFill[codeName], CodeFill[codeName]];
headerCode ← RopeCode1["\N--%g\N\N", IdFill[treeData.Identifier]];
use1 ← RecordTypeUse[usage, LookUpType[context, BuildRopeName["ROPE"]]];
use2 ← RecordTypeUse[use1, LookUpType[context, BuildRopeName["INT"]]];
code ← ConcatCode3[headerCode, nodeCode, nodeBodyCode];
temp1 ← use2;
temp0 ← code;
END;
END
END;
ModuleItemgenTknProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemgenTknProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
ModuleItemgenTknProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemgenTknProdData ← NARROW[tree.data];
temp1 ← FakeCopyContextForConditional[context];
temp0 ← FakeCopyInt[first];
END
END;
ModuleItemgenTknProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, file: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemgenTknProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
ModuleItemgenTknProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, file: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: ModuleItemNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: ModuleItemgenTknProdData ← NARROW[tree.data];
BEGIN
name: NameNode;
codeName: MesaCodeNode;
codeName ← RopeCode1["%gNode", IdFill[treeData.Identifier]];
name ← BuildName[treeData.Identifier];
temp0 ← RecordGenericToken[context, name, file, codeName];
END;
END
END;
CedarItemscedarTypesProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CedarItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CedarItemscedarTypesProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
CedarItemscedarTypesProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CedarItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CedarItemscedarTypesProdData ← NARROW[tree.data];
temp0 ← treeData.IdList.procs.RecordCedarTypes[treeData.IdList, context];
END
END;
CedarItemscedarTypesFromProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CedarItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CedarItemscedarTypesFromProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
CedarItemscedarTypesFromProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CedarItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CedarItemscedarTypesFromProdData ← NARROW[tree.data];
BEGIN
file: ROPE;
file ← RopeFromIdentifierNode[treeData.Identifier];
temp0 ← treeData.IdList.procs.RecordCedarTypesFrom[treeData.IdList, file, context];
END;
END
END;
CedarItemscedarEnumTypeFromProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CedarItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CedarItemscedarEnumTypeFromProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
CedarItemscedarEnumTypeFromProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CedarItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CedarItemscedarEnumTypeFromProdData ← NARROW[tree.data];
BEGIN
name: NameNode;
names: NameListNode;
file: ROPE;
codeName: MesaCodeNode;
codeName ← RopeCode1["%g", IdFill[treeData.IdentifiertypeName]];
file ← RopeFromIdentifierNode[treeData.IdentifierfileName];
names ← treeData.IdListvalues.procs.FormNameList[treeData.IdListvalues];
name ← BuildName[treeData.IdentifiertypeName];
temp0 ← RecordEnumeratedBaseType[context, name, file, names, codeName];
END;
END
END;
CedarItemscedarFunctionFromProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CedarItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CedarItemscedarFunctionFromProdData ← NARROW[tree.data];
BEGIN
argTypes: TypeListNode;
resultTypes: TypeListNode;
defFileName: ROPE;
fcnDefGraph: FcnDefGraphNode;
fcnDefGraph1: FcnDefGraphNode;
argNames: NameListNode;
resultNames: NameListNode;
resultNames ← treeData.ModIdListresults.procs.FormNameList[treeData.ModIdListresults];
argNames ← treeData.ModIdListargs.procs.FormNameList[treeData.ModIdListargs];
fcnDefGraph1 ← BuildFcnBaseGraph[argNames, resultNames];
fcnDefGraph ← treeData.DamageShareAssertions.procs.FormRecordOfDamageShareAssertion[treeData.DamageShareAssertions, fcnDefGraph1];
defFileName ← RopeFromIdentifierNode[treeData.IdentifierfileName];
resultTypes ← treeData.ModIdListresults.procs.FormTypeListEarly[treeData.ModIdListresults, context];
argTypes ← treeData.ModIdListargs.procs.FormTypeListEarly[treeData.ModIdListargs, context];
temp0 ← RecordBaseFunction[context, BuildName[treeData.IdentifierfunName], defFileName, argTypes, resultTypes, fcnDefGraph];
END;
END
END;
CedarItemscedarFunctionFromProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CedarItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CedarItemscedarFunctionFromProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
CGramItemssimpleTokensProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemssimpleTokensProdData ← NARROW[tree.data];
temp0 ← EqualRopes["True", "False"];
END
END;
CGramItemssimpleTokensProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemssimpleTokensProdData ← NARROW[tree.data];
BEGIN
tkn: MesaCodeNode;
simples: MesaCodeNode;
unused: MesaCodeNode;
prod: MesaCodeNode;
prod ← BuildEmptyCode[];
[simples, unused] ← treeData.RopeList.procs.SyntaxFileCodes[treeData.RopeList, context];
tkn ← RopeCode1["{ %g }: SimpleTokens;\N", CodeFill[simples]];
temp1 ← prod;
temp0 ← tkn;
END;
END
END;
CGramItemssimpleTokensProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemssimpleTokensProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
CGramItemssimpleTokensProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemssimpleTokensProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
CGramItemssimpleTokensProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemssimpleTokensProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
CGramItemssimpleTokensProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemssimpleTokensProdData ← NARROW[tree.data];
temp0 ← treeData.RopeList.procs.CollectRightSideSymbols[treeData.RopeList, context];
END
END;
CGramItemssimpleTokensProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemssimpleTokensProdData ← NARROW[tree.data];
temp1 ← FakeCopyContextForConditional[context];
temp0 ← FakeCopyInt[first];
END
END;
CGramItemsnonTerminalProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsnonTerminalProdData ← NARROW[tree.data];
temp0 ← EqualRopes["True", "False"];
END
END;
CGramItemsnonTerminalProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsnonTerminalProdData ← NARROW[tree.data];
BEGIN
tkn: MesaCodeNode;
prod: MesaCodeNode;
prod ← BuildEmptyCode[];
tkn ← RopeCode1["%g: NonTerminal;\N", IdFill[treeData.Identifiername]];
temp1 ← prod;
temp0 ← tkn;
END;
END
END;
CGramItemsnonTerminalProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsnonTerminalProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
CGramItemsnonTerminalProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsnonTerminalProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
CGramItemsnonTerminalProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsnonTerminalProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
CGramItemsnonTerminalProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsnonTerminalProdData ← NARROW[tree.data];
BEGIN
ntName: NameNode;
atName: NameNode;
atName ← BuildName[treeData.Identifierbuilds];
ntName ← BuildName[treeData.Identifiername];
temp0 ← RecordNonTerminalToken[context, ntName, atName];
END;
END
END;
CGramItemsnonTerminalProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsnonTerminalProdData ← NARROW[tree.data];
temp1 ← FakeCopyContextForConditional[context];
temp0 ← FakeCopyInt[first];
END
END;
CGramItemsconcreteProductionProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsconcreteProductionProdData ← NARROW[tree.data];
temp0 ← EqualRopes["True", "True"];
END
END;
CGramItemsconcreteProductionProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsconcreteProductionProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.ConcreteProduction.procs.SyntaxFileCodes[treeData.ConcreteProduction, context];
END
END;
CGramItemsconcreteProductionProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsconcreteProductionProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.ConcreteProduction.procs.LinkFileCode[treeData.ConcreteProduction, context, usage];
END
END;
CGramItemsconcreteProductionProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsconcreteProductionProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.ConcreteProduction.procs.ImplFileCode[treeData.ConcreteProduction, context, usage];
END
END;
CGramItemsconcreteProductionProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsconcreteProductionProdData ← NARROW[tree.data];
temp1 ← FakeUsageCopy[usage];
temp0 ← BuildEmptyCode[];
END
END;
CGramItemsconcreteProductionProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsconcreteProductionProdData ← NARROW[tree.data];
temp0 ← FakeCopyContextForConditional[context];
END
END;
CGramItemsconcreteProductionProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] =
BEGIN
tree: CGramItemsNode← NARROW[ref];
BEGIN
ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length];
treeData: CGramItemsconcreteProductionProdData ← NARROW[tree.data];
[temp0, temp1] ← treeData.ConcreteProduction.procs.CollectProductions[treeData.ConcreteProduction, first, context];
END
END;
END..