DIRECTORY ThreeC4BaseDecl1Def, Rope, ThreeC4Support, ThreeC4RootAbGramDef, ThreeC4BasicAbTypesDef, ThreeC4BaseDecl2Def; ThreeC4RootImplImpl: CEDAR PROGRAM IMPORTS ThreeC4BaseDecl1Def, ThreeC4Support, ThreeC4RootAbGramDef, ThreeC4BaseDecl2Def EXPORTS ThreeC4RootAbGramDef= BEGIN OPEN ThreeC4BaseDecl1Def, Rope, ThreeC4Support, ThreeC4RootAbGramDef, ThreeC4BasicAbTypesDef, ThreeC4BaseDecl2Def; MainGoalProdFormFileSeq: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: FileSeqNode] = BEGIN tree: MainGoalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: MainGoalProdData _ NARROW[tree.data]; temp0 _ BuildEmptyFileSeq[]; END END; WholeFileProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] = BEGIN tree: WholeFileNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: WholeFileProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleList.procs.SyntaxFileCodes[treeData.ModuleList, context]; END END; WholeFileProdFormLinkCallCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: WholeFileNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: WholeFileProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleList.procs.FormLinkCallCode[treeData.ModuleList, context, usage]; END END; WholeFileProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: WholeFileNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: WholeFileProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleList.procs.CollectRightSideSymbols[treeData.ModuleList, context]; END END; WholeFileProdCollectFunctionTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: WholeFileNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: WholeFileProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleList.procs.CollectFunctionTypes[treeData.ModuleList, context]; END END; WholeFileProdCollectValueTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: WholeFileNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: WholeFileProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleList.procs.CollectValueTypes[treeData.ModuleList, context]; END END; WholeFileProdFormFileSeq: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: FileSeqNode] = BEGIN tree: WholeFileNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: WholeFileProdData _ NARROW[tree.data]; BEGIN junk: BOOLEAN; files2: FileSeqNode; use: UsageNode; files1: FileSeqNode; check1: BOOLEAN; lookupContext: LookupContextNode; context7: ContextNode; context6: ContextNode; context5: ContextNode; context4: ContextNode; context3: ContextNode; context2: ContextNode; nProds: INT; context1: ContextNode; baseContext: ContextNode; baseContext _ RecordGlobalTreeType[context, BuildRopeName["Tree"], RopeCode["REF ANY"]]; [nProds, context1] _ treeData.ModuleList.procs.CollectProductions[treeData.ModuleList, 0, baseContext]; context2 _ treeData.IncludeClause.procs.CollectValueTypes[treeData.IncludeClause, context1]; context3 _ treeData.ModuleList.procs.CollectValueTypes[treeData.ModuleList, context2]; context4 _ treeData.IncludeClause.procs.CollectFunctionTypes[treeData.IncludeClause, context3]; context5 _ treeData.ModuleList.procs.CollectFunctionTypes[treeData.ModuleList, context4]; context6 _ treeData.IncludeClause.procs.CollectRightSideSymbols[treeData.IncludeClause, context5]; context7 _ treeData.ModuleList.procs.CollectRightSideSymbols[treeData.ModuleList, context6]; lookupContext _ BuildBasicLookupContext[context7]; check1 _ InspectContext[lookupContext]; files1 _ treeData.ModuleList.procs.MakeFileSeq[treeData.ModuleList, lookupContext]; IF treeData.ModuleList.procs.TestFormControlFile[treeData.ModuleList] THEN {BEGIN temp5: MesaCodeNode; temp6: MesaCodeNode; temp3: MesaCodeNode; temp4: MesaCodeNode; temp1: MesaCodeNode; temp2: MesaCodeNode; linkCallCode2: MesaCodeNode; linkUsage: UsageNode; linkCallCode1: MesaCodeNode; linkUsage1: UsageNode; [linkCallCode1, linkUsage1] _ treeData.ModuleList.procs.FormLinkCallCode[treeData.ModuleList, lookupContext, BuildEmptyUsage[]]; [linkCallCode2, linkUsage] _ treeData.IncludeClause.procs.FormLinkCallCode[treeData.IncludeClause, lookupContext, linkUsage1]; [temp3, temp4] _ treeData.IncludeClause.procs.SyntaxFileCodes[treeData.IncludeClause, lookupContext]; [temp1, temp2] _ treeData.ModuleList.procs.SyntaxFileCodes[treeData.ModuleList, lookupContext]; [temp5, temp6] _ ConcatCodePairs2[temp1, temp2, temp3, temp4]; [files2, use] _ treeData.ModuleList.procs.FormControlFileList[treeData.ModuleList, nProds, ConcatCode2[temp5, temp6], ConcatCode2[linkCallCode1, linkCallCode2], linkUsage]; END; } ELSE {use _ BuildEmptyUsage[]; files2 _ BuildEmptyFileSeq[]; }; junk _ TearDownGraphs[lookupContext]; temp0 _ ConcatFileSeq[files1, files2]; END; END END; IncludeClauseProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] = BEGIN tree: IncludeClauseNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeClauseProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.IdList.procs.SyntaxFileCodes[treeData.IdList, context]; END END; IncludeClauseProdFormLinkCallCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: IncludeClauseNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeClauseProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.IdList.procs.FormLinkCallCode[treeData.IdList, context, usage]; END END; IncludeClauseProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: IncludeClauseNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeClauseProdData _ NARROW[tree.data]; temp0 _ treeData.IdList.procs.CollectRightSideSymbols[treeData.IdList, context]; END END; IncludeClauseProdCollectFunctionTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: IncludeClauseNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeClauseProdData _ NARROW[tree.data]; temp0 _ treeData.IdList.procs.CollectFunctionTypes[treeData.IdList, context]; END END; IncludeClauseProdCollectValueTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: IncludeClauseNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeClauseProdData _ NARROW[tree.data]; temp0 _ treeData.IdList.procs.CollectValueTypes[treeData.IdList, context]; END END; ModuleListOneProdFormControlFileList: PUBLIC PROC[ref: REF ANY, nProds: INT, syntax: MesaCodeNode, linkCalls: MesaCodeNode, linkUsage: UsageNode] RETURNS[temp0: FileSeqNode, temp1: UsageNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListOneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleBody.procs.FormControlFileList[treeData.ModuleBody, nProds, syntax, linkCalls, linkUsage]; END END; ModuleListOneProdFormLinkCallCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListOneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleBody.procs.FormLinkCallCode[treeData.ModuleBody, context, usage]; END END; ModuleListOneProdTestFormControlFile: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListOneProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleBody.procs.TestFormControlFile[treeData.ModuleBody]; END END; ModuleListOneProdMakeFileSeq: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: FileSeqNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListOneProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleBody.procs.MakeFileSeq[treeData.ModuleBody, context]; END END; ModuleListOneProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListOneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleBody.procs.SyntaxFileCodes[treeData.ModuleBody, context]; END END; ModuleListOneProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListOneProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleBody.procs.CollectRightSideSymbols[treeData.ModuleBody, context]; END END; ModuleListOneProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListOneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleBody.procs.CollectProductions[treeData.ModuleBody, first, context]; END END; ModuleListOneProdCollectFunctionTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListOneProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleBody.procs.CollectFunctionTypes[treeData.ModuleBody, context]; END END; ModuleListOneProdCollectValueTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListOneProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleBody.procs.CollectValueTypes[treeData.ModuleBody, context]; END END; ModuleListManyProdFormControlFileList: PUBLIC PROC[ref: REF ANY, nProds: INT, syntax: MesaCodeNode, linkCalls: MesaCodeNode, linkUsage: UsageNode] RETURNS[temp0: FileSeqNode, temp1: UsageNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListManyProdData _ NARROW[tree.data]; BEGIN file1: FileSeqNode; use1: UsageNode; file2: FileSeqNode; use2: UsageNode; syntax1: MesaCodeNode; syntax2: MesaCodeNode; linkCalls1: MesaCodeNode; linkCalls2: MesaCodeNode; linkCalls2 _ RopeCode1["%g", CodeFill[linkCalls]]; linkCalls1 _ RopeCode1["%g", CodeFill[linkCalls2]]; syntax2 _ RopeCode1["%g", CodeFill[syntax]]; syntax1 _ RopeCode1["%g", CodeFill[syntax2]]; [file2, use2] _ treeData.ModuleBody.procs.FormControlFileList[treeData.ModuleBody, nProds, syntax2, linkCalls2, linkUsage]; [file1, use1] _ treeData.ModuleList.procs.FormControlFileList[treeData.ModuleList, nProds, syntax1, linkCalls1, use2]; temp1 _ use1; temp0 _ ConcatFileSeq[file1, file2]; END; END END; ModuleListManyProdFormLinkCallCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListManyProdData _ NARROW[tree.data]; BEGIN oneBodyCode: MesaCodeNode; use2: UsageNode; listCode: MesaCodeNode; use1: UsageNode; [listCode, use1] _ treeData.ModuleList.procs.FormLinkCallCode[treeData.ModuleList, context, usage]; [oneBodyCode, use2] _ treeData.ModuleBody.procs.FormLinkCallCode[treeData.ModuleBody, context, use1]; temp1 _ use2; temp0 _ ConcatCode2[listCode, oneBodyCode]; END; END END; ModuleListManyProdTestFormControlFile: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListManyProdData _ NARROW[tree.data]; temp0 _ Or[treeData.ModuleList.procs.TestFormControlFile[treeData.ModuleList], treeData.ModuleBody.procs.TestFormControlFile[treeData.ModuleBody]]; END END; ModuleListManyProdMakeFileSeq: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: FileSeqNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListManyProdData _ NARROW[tree.data]; temp0 _ ConcatFileSeq[treeData.ModuleList.procs.MakeFileSeq[treeData.ModuleList, context], treeData.ModuleBody.procs.MakeFileSeq[treeData.ModuleBody, context]]; END END; ModuleListManyProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListManyProdData _ NARROW[tree.data]; temp4: MesaCodeNode; temp5: MesaCodeNode; temp2: MesaCodeNode; temp3: MesaCodeNode; [temp4, temp5] _ treeData.ModuleBody.procs.SyntaxFileCodes[treeData.ModuleBody, context]; [temp2, temp3] _ treeData.ModuleList.procs.SyntaxFileCodes[treeData.ModuleList, context]; [temp0, temp1] _ ConcatCodePairs2[temp2, temp3, temp4, temp5]; END END; ModuleListManyProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListManyProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleBody.procs.CollectRightSideSymbols[treeData.ModuleBody, treeData.ModuleList.procs.CollectRightSideSymbols[treeData.ModuleList, context]]; END END; ModuleListManyProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListManyProdData _ NARROW[tree.data]; temp2: INT; temp3: ContextNode; [temp2, temp3] _ treeData.ModuleList.procs.CollectProductions[treeData.ModuleList, first, context]; [temp0, temp1] _ treeData.ModuleBody.procs.CollectProductions[treeData.ModuleBody, temp2, temp3]; END END; ModuleListManyProdCollectFunctionTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListManyProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleBody.procs.CollectFunctionTypes[treeData.ModuleBody, treeData.ModuleList.procs.CollectFunctionTypes[treeData.ModuleList, context]]; END END; ModuleListManyProdCollectValueTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleListManyProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleBody.procs.CollectValueTypes[treeData.ModuleBody, treeData.ModuleList.procs.CollectValueTypes[treeData.ModuleList, context]]; END END; ModuleBodycontrolProdFormControlFileList: PUBLIC PROC[ref: REF ANY, nProds: INT, syntax: MesaCodeNode, linkCalls: MesaCodeNode, linkUsage: UsageNode] RETURNS[temp0: FileSeqNode, temp1: UsageNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodycontrolProdData _ NARROW[tree.data]; BEGIN syntaxFiles: FileSeqNode; defFiles: FileSeqNode; defDirCode: MesaCodeNode; implFiles: FileSeqNode; implDirCode: MesaCodeNode; implImpCode: MesaCodeNode; implExpCode: MesaCodeNode; implOpenCode: MesaCodeNode; use5: UsageNode; use4: UsageNode; use3: UsageNode; use2: UsageNode; use1: UsageNode; table: MesaCodeNode; driverProced: MesaCodeNode; linkProced: MesaCodeNode; getTable: MesaCodeNode; getTable _ ConcatCode6[RopeCode["\N-- obtain parser table\N\N"], RopeCode["\TBEGIN\N"], RopeCode1["\TtableStream: IO.STREAM _ FS.StreamOpen[\"%g.kipperedParseTables\"];\N", IdFill[treeData.Identifier]], RopeCode["\TParseTable _ OneCasabaParser.BuildParserTableFromKipperedStream[tableStream];\N"], RopeCode["\TIO.Close[tableStream];\N"], RopeCode["\TEND;\N\N"]]; linkProced _ ConcatCode4[RopeCode["SetUpLinks: PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =\N"], RopeCode["BEGIN\N"], RopeCode1["%g", CodeFill[linkCalls]], RopeCode["END;\N\N"]]; driverProced _ ConcatCode4[RopeCode["ParseOneStream: PUBLIC PROC[from: IO.STREAM, debugFlags: CARDINAL, debuggingTextTo: IO.STREAM] RETURNS[REF ANY] =\N"], RopeCode["BEGIN\N"], RopeCode1["RETURN[ThreeC4Support.ParseOneStream[from, ParseTable, SetUpLinks, %g, debugFlags, debuggingTextTo]]\N", IntFill[nProds]], RopeCode["END;\N\N"]]; table _ RopeCode["ParseTable: OneCasabaParser.ParserTable _ NIL;\N\N"]; use1 _ RecordDefFileUse[linkUsage, "IO", Use.import]; use2 _ RecordDefFileUse[use1, "ThreeC4Support", Use.import]; use3 _ RecordDefFileUse[use2, ConcatRopes2[RopeFromIdentifierNode[treeData.Identifier], "Def"], Use.export]; use4 _ RecordDefFileUse[use3, "OneCasabaParser", Use.import]; use5 _ RecordDefFileUse[use4, "FS", Use.import]; [implDirCode, implImpCode, implExpCode, implOpenCode] _ BuildImplUseCode[use5]; implFiles _ BuildOneFileSeq[RopeCode1["%gImpl.mesa", IdFill[treeData.Identifier]], ConcatCode6[ConcatCode6[implDirCode, RopeCode1["%gImpl: CEDAR PROGRAM", IdFill[treeData.Identifier]], implImpCode, implExpCode, RopeCode["= \NBEGIN\N"], implOpenCode], table, driverProced, linkProced, getTable, RopeCode["END..\N"]]]; defDirCode _ ConcatCode2[RopeCode["DIRECTORY\N"], RopeCode["\TIO USING[STREAM];\N"]]; defFiles _ BuildOneFileSeq[RopeCode1["%gDef.mesa", IdFill[treeData.Identifier]], ConcatCode5[defDirCode, RopeCode1["%gDef: CEDAR DEFINITIONS =\N", IdFill[treeData.Identifier]], RopeCode["BEGIN\N\N"], RopeCode["ParseOneStream: PROC[from: IO.STREAM, debugFlags: CARDINAL, debuggingTextTo: IO.STREAM] RETURNS[REF ANY];\N\N"], RopeCode["END..\N"]]]; syntaxFiles _ BuildOneFileSeq[RopeCode1["%g.OneCasaba", IdFill[treeData.Identifier]], ConcatCode3[RopeCode["Begin\N"], RopeCode1["%g", CodeFill[syntax]], RopeCode["End."]]]; temp1 _ use5; temp0 _ ConcatFileSeq[syntaxFiles, ConcatFileSeq[defFiles, implFiles]]; END; END END; ModuleBodycontrolProdFormLinkCallCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodycontrolProdData _ NARROW[tree.data]; temp1 _ FakeUsageCopy[usage]; temp0 _ BuildEmptyCode[]; END END; ModuleBodycontrolProdTestFormControlFile: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodycontrolProdData _ NARROW[tree.data]; temp0 _ EqualRopes["True", "True"]; END END; ModuleBodycontrolProdMakeFileSeq: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: FileSeqNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodycontrolProdData _ NARROW[tree.data]; temp0 _ BuildEmptyFileSeq[]; END END; ModuleBodycontrolProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodycontrolProdData _ NARROW[tree.data]; temp1 _ BuildEmptyCode[]; temp0 _ BuildEmptyCode[]; END END; ModuleBodycontrolProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodycontrolProdData _ NARROW[tree.data]; temp0 _ FakeCopyContextForConditional[context]; END END; ModuleBodycontrolProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodycontrolProdData _ NARROW[tree.data]; temp1 _ FakeCopyContextForConditional[context]; temp0 _ FakeCopyInt[first]; END END; ModuleBodycontrolProdCollectFunctionTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodycontrolProdData _ NARROW[tree.data]; temp0 _ FakeCopyContextForConditional[context]; END END; ModuleBodycontrolProdCollectValueTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodycontrolProdData _ NARROW[tree.data]; temp0 _ RecordControlModule[context, ConcatRopes2[RopeFromIdentifierNode[treeData.Identifier], "Def"]]; END END; ModuleBodynormalProdFormControlFileList: PUBLIC PROC[ref: REF ANY, nProds: INT, syntax: MesaCodeNode, linkCalls: MesaCodeNode, linkUsage: UsageNode] RETURNS[temp0: FileSeqNode, temp1: UsageNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodynormalProdData _ NARROW[tree.data]; temp1 _ FakeUsageCopy[linkUsage]; temp0 _ BuildEmptyFileSeq[]; END END; ModuleBodynormalProdFormLinkCallCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodynormalProdData _ NARROW[tree.data]; IF treeData.ModuleItemList.procs.TestLinkPresent[treeData.ModuleItemList] THEN {BEGIN defFileName: ROPE; defFileName _ ConcatRopes2[RopeFromIdentifierNode[treeData.Identifier], "Def"]; temp1 _ RecordDefFileUse[usage, defFileName, Use.import]; temp0 _ RopeCode1["%gLinkProc[prodLinkArray, tknLinkArray];\N", IdFill[treeData.Identifier]]; END; } ELSE {temp1 _ FakeUsageCopy[usage]; temp0 _ BuildEmptyCode[]; }; END END; ModuleBodynormalProdTestFormControlFile: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodynormalProdData _ NARROW[tree.data]; temp0 _ EqualRopes["True", "False"]; END END; ModuleBodynormalProdMakeFileSeq: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: FileSeqNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodynormalProdData _ NARROW[tree.data]; BEGIN seq2: FileSeqNode; seq1: FileSeqNode; defDirCode: MesaCodeNode; defOpenCode: MesaCodeNode; dUse: UsageNode; defCode: MesaCodeNode; defCode1: MesaCodeNode; dUse1: UsageNode; implDirCode: MesaCodeNode; implImpCode: MesaCodeNode; implExpCode: MesaCodeNode; implOpenCode: MesaCodeNode; linkProcedCode: MesaCodeNode; linkDefCode: MesaCodeNode; iUse: UsageNode; defFileName: ROPE; noLinks: BOOLEAN; linkCode: MesaCodeNode; iUse2: UsageNode; implCode: MesaCodeNode; iUse1: UsageNode; iUse0: UsageNode; iUse0 _ BuildEmptyUsage[]; [implCode, iUse1] _ treeData.ModuleItemList.procs.ImplFileCode[treeData.ModuleItemList, context, iUse0]; [linkCode, iUse2] _ treeData.ModuleItemList.procs.LinkFileCode[treeData.ModuleItemList, context, iUse1]; noLinks _ TestEmptyCode[linkCode]; defFileName _ ConcatRopes2[RopeFromIdentifierNode[treeData.Identifier], "Def"]; IF noLinks THEN {iUse _ FakeUsageCopy[iUse2]; } ELSE {BEGIN iUse3: UsageNode; iUse3 _ RecordDefFileUse[iUse2, "ThreeC4Support", Use.ref]; iUse _ RecordDefFileUse[iUse3, defFileName, Use.export]; END; }; IF noLinks THEN {linkDefCode _ BuildEmptyCode[]; } ELSE {linkDefCode _ RopeCode1["%gLinkProc: PROC[SeeProdLinkArray, TokenLinkArray];\N", IdFill[treeData.Identifier]]; }; IF noLinks THEN {linkProcedCode _ BuildEmptyCode[]; } ELSE {linkProcedCode _ ConcatCode4[RopeCode1["%gLinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =\N", IdFill[treeData.Identifier]], RopeCode["BEGIN\N"], linkCode, RopeCode["END;\N\N"]]; }; [implDirCode, implImpCode, implExpCode, implOpenCode] _ BuildImplUseCode[iUse]; [defCode1, dUse1] _ treeData.ModuleItemList.procs.DefFileCode[treeData.ModuleItemList, context, BuildEmptyUsage[]]; defCode _ ConcatCode2[linkDefCode, defCode1]; IF noLinks THEN {dUse _ FakeUsageCopy[dUse1]; } ELSE {dUse _ RecordDefFileUse[dUse1, "ThreeC4Support", Use.ref]; }; [defDirCode, defOpenCode] _ BuildDefUseCode[dUse, defFileName]; IF TestEmptyCode[implCode] THEN {seq1 _ BuildEmptyFileSeq[]; } ELSE {seq1 _ BuildOneFileSeq[RopeCode1["%gImpl.mesa", IdFill[treeData.Identifier]], ConcatCode9[implDirCode, RopeCode1["%gImpl: CEDAR PROGRAM", IdFill[treeData.Identifier]], implImpCode, implExpCode, RopeCode["= \NBEGIN\N"], implOpenCode, linkProcedCode, implCode, RopeCode["END..\N"]]]; }; IF TestEmptyCode[defCode] THEN {seq2 _ FakeCopyFileSeqForConditional[seq1]; } ELSE {seq2 _ AppendToFileSeq[seq1, RopeCode1["%gDef.mesa", IdFill[treeData.Identifier]], ConcatCode6[defDirCode, RopeCode1["%gDef: CEDAR DEFINITIONS = \N", IdFill[treeData.Identifier]], RopeCode["BEGIN\N"], defOpenCode, RopeCode1["%g", CodeFill[defCode]], RopeCode["END..\N"]]]; }; temp0 _ seq2; END; END END; ModuleBodynormalProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodynormalProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleItemList.procs.SyntaxFileCodes[treeData.ModuleItemList, context]; END END; ModuleBodynormalProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodynormalProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleItemList.procs.CollectRightSideSymbols[treeData.ModuleItemList, context]; END END; ModuleBodynormalProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodynormalProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleItemList.procs.CollectProductions[treeData.ModuleItemList, first, context]; END END; ModuleBodynormalProdCollectFunctionTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodynormalProdData _ NARROW[tree.data]; BEGIN defFileName: ROPE; defFileName _ ConcatRopes2[RopeFromIdentifierNode[treeData.Identifier], "Def"]; temp0 _ treeData.ModuleItemList.procs.CollectModuleFunctionTypes[treeData.ModuleItemList, defFileName, context]; END; END END; ModuleBodynormalProdCollectValueTypes: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodynormalProdData _ NARROW[tree.data]; BEGIN defFileName: ROPE; defFileName _ ConcatRopes2[RopeFromIdentifierNode[treeData.Identifier], "Def"]; temp0 _ treeData.ModuleItemList.procs.CollectModuleValueTypes[treeData.ModuleItemList, defFileName, context]; END; END END; ModuleItemListOneProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListOneProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleItem.procs.TestLinkPresent[treeData.ModuleItem]; END END; ModuleItemListOneProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListOneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleItem.procs.SyntaxFileCodes[treeData.ModuleItem, context]; END END; ModuleItemListOneProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListOneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleItem.procs.LinkFileCode[treeData.ModuleItem, context, usage]; END END; ModuleItemListOneProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListOneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleItem.procs.ImplFileCode[treeData.ModuleItem, context, usage]; END END; ModuleItemListOneProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListOneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleItem.procs.DefFileCode[treeData.ModuleItem, context, usage]; END END; ModuleItemListOneProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListOneProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleItem.procs.CollectRightSideSymbols[treeData.ModuleItem, context]; END END; ModuleItemListOneProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListOneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleItem.procs.CollectProductions[treeData.ModuleItem, first, context]; END END; ModuleItemListOneProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListOneProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleItem.procs.CollectModuleFunctionTypes[treeData.ModuleItem, defFileName, context]; END END; ModuleItemListOneProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListOneProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleItem.procs.CollectModuleValueTypes[treeData.ModuleItem, defFileName, context]; END END; ModuleItemListManyProdTestLinkPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListManyProdData _ NARROW[tree.data]; temp0 _ Or[treeData.ModuleItemList.procs.TestLinkPresent[treeData.ModuleItemList], treeData.ModuleItem.procs.TestLinkPresent[treeData.ModuleItem]]; END END; ModuleItemListManyProdSyntaxFileCodes: PUBLIC PROC[ref: REF ANY, context: LookupContextNode] RETURNS[temp0: MesaCodeNode, temp1: MesaCodeNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListManyProdData _ NARROW[tree.data]; temp4: MesaCodeNode; temp5: MesaCodeNode; temp2: MesaCodeNode; temp3: MesaCodeNode; [temp4, temp5] _ treeData.ModuleItem.procs.SyntaxFileCodes[treeData.ModuleItem, context]; [temp2, temp3] _ treeData.ModuleItemList.procs.SyntaxFileCodes[treeData.ModuleItemList, context]; [temp0, temp1] _ ConcatCodePairs2[temp2, temp3, temp4, temp5]; END END; ModuleItemListManyProdLinkFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListManyProdData _ NARROW[tree.data]; BEGIN code: MesaCodeNode; code2: MesaCodeNode; use2: UsageNode; code1: MesaCodeNode; use1: UsageNode; [code1, use1] _ treeData.ModuleItemList.procs.LinkFileCode[treeData.ModuleItemList, context, usage]; [code2, use2] _ treeData.ModuleItem.procs.LinkFileCode[treeData.ModuleItem, context, use1]; code _ ConcatCode2[code1, code2]; temp1 _ use2; temp0 _ code; END; END END; ModuleItemListManyProdImplFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListManyProdData _ NARROW[tree.data]; BEGIN code: MesaCodeNode; code2: MesaCodeNode; use2: UsageNode; code1: MesaCodeNode; use1: UsageNode; [code1, use1] _ treeData.ModuleItemList.procs.ImplFileCode[treeData.ModuleItemList, context, usage]; [code2, use2] _ treeData.ModuleItem.procs.ImplFileCode[treeData.ModuleItem, context, use1]; code _ ConcatCode2[code1, code2]; temp1 _ use2; temp0 _ code; END; END END; ModuleItemListManyProdDefFileCode: PUBLIC PROC[ref: REF ANY, context: LookupContextNode, usage: UsageNode] RETURNS[temp0: MesaCodeNode, temp1: UsageNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListManyProdData _ NARROW[tree.data]; BEGIN code: MesaCodeNode; code2: MesaCodeNode; use2: UsageNode; code1: MesaCodeNode; use1: UsageNode; [code1, use1] _ treeData.ModuleItemList.procs.DefFileCode[treeData.ModuleItemList, context, usage]; [code2, use2] _ treeData.ModuleItem.procs.DefFileCode[treeData.ModuleItem, context, use1]; code _ ConcatCode2[code1, code2]; temp1 _ use2; temp0 _ code; END; END END; ModuleItemListManyProdCollectRightSideSymbols: PUBLIC PROC[ref: REF ANY, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListManyProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleItem.procs.CollectRightSideSymbols[treeData.ModuleItem, treeData.ModuleItemList.procs.CollectRightSideSymbols[treeData.ModuleItemList, context]]; END END; ModuleItemListManyProdCollectProductions: PUBLIC PROC[ref: REF ANY, first: INT, context: ContextNode] RETURNS[temp0: INT, temp1: ContextNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListManyProdData _ NARROW[tree.data]; temp2: INT; temp3: ContextNode; [temp2, temp3] _ treeData.ModuleItemList.procs.CollectProductions[treeData.ModuleItemList, first, context]; [temp0, temp1] _ treeData.ModuleItem.procs.CollectProductions[treeData.ModuleItem, temp2, temp3]; END END; ModuleItemListManyProdCollectModuleFunctionTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListManyProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleItem.procs.CollectModuleFunctionTypes[treeData.ModuleItem, defFileName, treeData.ModuleItemList.procs.CollectModuleFunctionTypes[treeData.ModuleItemList, defFileName, context]]; END END; ModuleItemListManyProdCollectModuleValueTypes: PUBLIC PROC[ref: REF ANY, defFileName: ROPE, context: ContextNode] RETURNS[temp0: ContextNode] = BEGIN tree: ModuleItemListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleItemListManyProdData _ NARROW[tree.data]; temp0 _ treeData.ModuleItem.procs.CollectModuleValueTypes[treeData.ModuleItem, defFileName, treeData.ModuleItemList.procs.CollectModuleValueTypes[treeData.ModuleItemList, defFileName, context]]; END END; END..