DIRECTORY ThreeC4BaseDecl1Def, ThreeC4RootAbGramDef, ThreeC4BasicAbTypesDef; ThreeC4RootAbGramImpl: CEDAR PROGRAM IMPORTS ThreeC4RootAbGramDef EXPORTS ThreeC4RootAbGramDef= BEGIN OPEN ThreeC4BaseDecl1Def, ThreeC4RootAbGramDef, ThreeC4BasicAbTypesDef; -- MainGoalProd MainGoalProdProcs: PUBLIC MainGoalNodeProcs _ NEW[MainGoalNodeProcsBody _ [MainGoalProdFormFileSeq]]; BuildMainGoalProdNode: PUBLIC PROC[position: INT, length: INT, WholeFile: WholeFileNode] RETURNS[MainGoalNode] = BEGIN data: MainGoalProdData _ NEW[MainGoalProdDataBody_[ WholeFile]]; RETURN[NEW[MainGoalNodeBody_[position, length, MainGoalProdProcs, data]]]; END; -- WholeFileProd WholeFileProdProcs: PUBLIC WholeFileNodeProcs _ NEW[WholeFileNodeProcsBody _ [WholeFileProdFormFileSeq, WholeFileProdCollectValueTypes, WholeFileProdCollectFunctionTypes, WholeFileProdCollectRightSideSymbols, WholeFileProdFormLinkCallCode, WholeFileProdSyntaxFileCodes]]; BuildWholeFileProdNode: PUBLIC PROC[position: INT, length: INT, IncludeClause: IncludeClauseNode, ModuleList: ModuleListNode] RETURNS[WholeFileNode] = BEGIN data: WholeFileProdData _ NEW[WholeFileProdDataBody_[ IncludeClause, ModuleList]]; RETURN[NEW[WholeFileNodeBody_[position, length, WholeFileProdProcs, data]]]; END; -- IncludeClauseProd IncludeClauseProdProcs: PUBLIC IncludeClauseNodeProcs _ NEW[IncludeClauseNodeProcsBody _ [IncludeClauseProdCollectValueTypes, IncludeClauseProdCollectFunctionTypes, IncludeClauseProdCollectRightSideSymbols, IncludeClauseProdFormLinkCallCode, IncludeClauseProdSyntaxFileCodes]]; BuildIncludeClauseProdNode: PUBLIC PROC[position: INT, length: INT, IdList: IdListNode] RETURNS[IncludeClauseNode] = BEGIN data: IncludeClauseProdData _ NEW[IncludeClauseProdDataBody_[ IdList]]; RETURN[NEW[IncludeClauseNodeBody_[position, length, IncludeClauseProdProcs, data]]]; END; -- ModuleListOneProd ModuleListOneProdProcs: PUBLIC ModuleListNodeProcs _ NEW[ModuleListNodeProcsBody _ [ModuleListOneProdCollectValueTypes, ModuleListOneProdCollectFunctionTypes, ModuleListOneProdCollectProductions, ModuleListOneProdCollectRightSideSymbols, ModuleListOneProdSyntaxFileCodes, ModuleListOneProdMakeFileSeq, ModuleListOneProdTestFormControlFile, ModuleListOneProdFormLinkCallCode, ModuleListOneProdFormControlFileList]]; BuildModuleListOneProdNode: PUBLIC PROC[position: INT, length: INT, ModuleBody: ModuleBodyNode] RETURNS[ModuleListNode] = BEGIN data: ModuleListOneProdData _ NEW[ModuleListOneProdDataBody_[ ModuleBody]]; RETURN[NEW[ModuleListNodeBody_[position, length, ModuleListOneProdProcs, data]]]; END; -- ModuleListManyProd ModuleListManyProdProcs: PUBLIC ModuleListNodeProcs _ NEW[ModuleListNodeProcsBody _ [ModuleListManyProdCollectValueTypes, ModuleListManyProdCollectFunctionTypes, ModuleListManyProdCollectProductions, ModuleListManyProdCollectRightSideSymbols, ModuleListManyProdSyntaxFileCodes, ModuleListManyProdMakeFileSeq, ModuleListManyProdTestFormControlFile, ModuleListManyProdFormLinkCallCode, ModuleListManyProdFormControlFileList]]; BuildModuleListManyProdNode: PUBLIC PROC[position: INT, length: INT, ModuleList: ModuleListNode, ModuleBody: ModuleBodyNode] RETURNS[ModuleListNode] = BEGIN data: ModuleListManyProdData _ NEW[ModuleListManyProdDataBody_[ ModuleList, ModuleBody]]; RETURN[NEW[ModuleListNodeBody_[position, length, ModuleListManyProdProcs, data]]]; END; -- ModuleBodycontrolProd ModuleBodycontrolProdProcs: PUBLIC ModuleBodyNodeProcs _ NEW[ModuleBodyNodeProcsBody _ [ModuleBodycontrolProdCollectValueTypes, ModuleBodycontrolProdCollectFunctionTypes, ModuleBodycontrolProdCollectProductions, ModuleBodycontrolProdCollectRightSideSymbols, ModuleBodycontrolProdSyntaxFileCodes, ModuleBodycontrolProdMakeFileSeq, ModuleBodycontrolProdTestFormControlFile, ModuleBodycontrolProdFormLinkCallCode, ModuleBodycontrolProdFormControlFileList]]; BuildModuleBodycontrolProdNode: PUBLIC PROC[position: INT, length: INT, Identifier: IdentifierNode] RETURNS[ModuleBodyNode] = BEGIN data: ModuleBodycontrolProdData _ NEW[ModuleBodycontrolProdDataBody_[ Identifier]]; RETURN[NEW[ModuleBodyNodeBody_[position, length, ModuleBodycontrolProdProcs, data]]]; END; -- ModuleBodynormalProd ModuleBodynormalProdProcs: PUBLIC ModuleBodyNodeProcs _ NEW[ModuleBodyNodeProcsBody _ [ModuleBodynormalProdCollectValueTypes, ModuleBodynormalProdCollectFunctionTypes, ModuleBodynormalProdCollectProductions, ModuleBodynormalProdCollectRightSideSymbols, ModuleBodynormalProdSyntaxFileCodes, ModuleBodynormalProdMakeFileSeq, ModuleBodynormalProdTestFormControlFile, ModuleBodynormalProdFormLinkCallCode, ModuleBodynormalProdFormControlFileList]]; BuildModuleBodynormalProdNode: PUBLIC PROC[position: INT, length: INT, Identifier: IdentifierNode, ModuleItemList: ModuleItemListNode] RETURNS[ModuleBodyNode] = BEGIN data: ModuleBodynormalProdData _ NEW[ModuleBodynormalProdDataBody_[ Identifier, ModuleItemList]]; RETURN[NEW[ModuleBodyNodeBody_[position, length, ModuleBodynormalProdProcs, data]]]; END; -- ModuleItemListOneProd ModuleItemListOneProdProcs: PUBLIC ModuleItemListNodeProcs _ NEW[ModuleItemListNodeProcsBody _ [ModuleItemListOneProdCollectModuleValueTypes, ModuleItemListOneProdCollectModuleFunctionTypes, ModuleItemListOneProdCollectProductions, ModuleItemListOneProdCollectRightSideSymbols, ModuleItemListOneProdDefFileCode, ModuleItemListOneProdImplFileCode, ModuleItemListOneProdLinkFileCode, ModuleItemListOneProdSyntaxFileCodes, ModuleItemListOneProdTestLinkPresent]]; BuildModuleItemListOneProdNode: PUBLIC PROC[position: INT, length: INT, ModuleItem: ModuleItemNode] RETURNS[ModuleItemListNode] = BEGIN data: ModuleItemListOneProdData _ NEW[ModuleItemListOneProdDataBody_[ ModuleItem]]; RETURN[NEW[ModuleItemListNodeBody_[position, length, ModuleItemListOneProdProcs, data]]]; END; -- ModuleItemListManyProd ModuleItemListManyProdProcs: PUBLIC ModuleItemListNodeProcs _ NEW[ModuleItemListNodeProcsBody _ [ModuleItemListManyProdCollectModuleValueTypes, ModuleItemListManyProdCollectModuleFunctionTypes, ModuleItemListManyProdCollectProductions, ModuleItemListManyProdCollectRightSideSymbols, ModuleItemListManyProdDefFileCode, ModuleItemListManyProdImplFileCode, ModuleItemListManyProdLinkFileCode, ModuleItemListManyProdSyntaxFileCodes, ModuleItemListManyProdTestLinkPresent]]; BuildModuleItemListManyProdNode: PUBLIC PROC[position: INT, length: INT, ModuleItemList: ModuleItemListNode, ModuleItem: ModuleItemNode] RETURNS[ModuleItemListNode] = BEGIN data: ModuleItemListManyProdData _ NEW[ModuleItemListManyProdDataBody_[ ModuleItemList, ModuleItem]]; RETURN[NEW[ModuleItemListNodeBody_[position, length, ModuleItemListManyProdProcs, data]]]; END; END..