DIRECTORY ThreeC4BaseDecl1Def, ThreeC4CProdAbGramDef, ThreeC4BasicAbTypesDef; ThreeC4CProdAbGramImpl: CEDAR PROGRAM IMPORTS ThreeC4CProdAbGramDef EXPORTS ThreeC4CProdAbGramDef= BEGIN OPEN ThreeC4BaseDecl1Def, ThreeC4CProdAbGramDef, ThreeC4BasicAbTypesDef; -- ConcreteProductionProd ConcreteProductionProdProcs: PUBLIC ConcreteProductionNodeProcs ← NEW[ConcreteProductionNodeProcsBody ← [ConcreteProductionProdCollectProductions, ConcreteProductionProdImplFileCode, ConcreteProductionProdLinkFileCode, ConcreteProductionProdSyntaxFileCodes]]; BuildConcreteProductionProdNode: PUBLIC PROC[position: INT, length: INT, ModId: ModIdNode, ConcreteRightSideList: ConcreteRightSideListNode, BuildExp: BuildExpNode] RETURNS[ConcreteProductionNode] = BEGIN data: ConcreteProductionProdData ← NEW[ConcreteProductionProdDataBody←[ ModId, ConcreteRightSideList, BuildExp]]; RETURN[NEW[ConcreteProductionNodeBody←[position, length, ConcreteProductionProdProcs, data]]]; END; -- ConcreteRightSideListemptyProd ConcreteRightSideListemptyProdProcs: PUBLIC ConcreteRightSideListNodeProcs ← NEW[ConcreteRightSideListNodeProcsBody ← [ConcreteRightSideListemptyProdFormRightSideContext, ConcreteRightSideListemptyProdFormNameList, ConcreteRightSideListemptyProdFormTypeList, ConcreteRightSideListemptyProdFormNodeVarAssignCode, ConcreteRightSideListemptyProdSyntaxRightSideFileCode]]; BuildConcreteRightSideListemptyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[ConcreteRightSideListNode] = BEGIN RETURN[NEW[ConcreteRightSideListNodeBody←[position, length, ConcreteRightSideListemptyProdProcs, NIL]]]; END; -- ConcreteRightSideListoneProd ConcreteRightSideListoneProdProcs: PUBLIC ConcreteRightSideListNodeProcs ← NEW[ConcreteRightSideListNodeProcsBody ← [ConcreteRightSideListoneProdFormRightSideContext, ConcreteRightSideListoneProdFormNameList, ConcreteRightSideListoneProdFormTypeList, ConcreteRightSideListoneProdFormNodeVarAssignCode, ConcreteRightSideListoneProdSyntaxRightSideFileCode]]; BuildConcreteRightSideListoneProdNode: PUBLIC PROC[position: INT, length: INT, ConcreteRightSideItem: ConcreteRightSideItemNode] RETURNS[ConcreteRightSideListNode] = BEGIN data: ConcreteRightSideListoneProdData ← NEW[ConcreteRightSideListoneProdDataBody←[ ConcreteRightSideItem]]; RETURN[NEW[ConcreteRightSideListNodeBody←[position, length, ConcreteRightSideListoneProdProcs, data]]]; END; -- ConcreteRightSideListmanyProd ConcreteRightSideListmanyProdProcs: PUBLIC ConcreteRightSideListNodeProcs ← NEW[ConcreteRightSideListNodeProcsBody ← [ConcreteRightSideListmanyProdFormRightSideContext, ConcreteRightSideListmanyProdFormNameList, ConcreteRightSideListmanyProdFormTypeList, ConcreteRightSideListmanyProdFormNodeVarAssignCode, ConcreteRightSideListmanyProdSyntaxRightSideFileCode]]; BuildConcreteRightSideListmanyProdNode: PUBLIC PROC[position: INT, length: INT, ConcreteRightSideList: ConcreteRightSideListNode, ConcreteRightSideItem: ConcreteRightSideItemNode] RETURNS[ConcreteRightSideListNode] = BEGIN data: ConcreteRightSideListmanyProdData ← NEW[ConcreteRightSideListmanyProdDataBody←[ ConcreteRightSideList, ConcreteRightSideItem]]; RETURN[NEW[ConcreteRightSideListNodeBody←[position, length, ConcreteRightSideListmanyProdProcs, data]]]; END; -- ConcreteRightSideItemropeProd ConcreteRightSideItemropeProdProcs: PUBLIC ConcreteRightSideItemNodeProcs ← NEW[ConcreteRightSideItemNodeProcsBody ← [ConcreteRightSideItemropeProdFormRightSideContext, ConcreteRightSideItemropeProdFormNameList, ConcreteRightSideItemropeProdFormTypeList, ConcreteRightSideItemropeProdFormNodeVarAssignCode, ConcreteRightSideItemropeProdSyntaxRightSideFileCode]]; BuildConcreteRightSideItemropeProdNode: PUBLIC PROC[position: INT, length: INT, Rope: RopeNode] RETURNS[ConcreteRightSideItemNode] = BEGIN data: ConcreteRightSideItemropeProdData ← NEW[ConcreteRightSideItemropeProdDataBody←[ Rope]]; RETURN[NEW[ConcreteRightSideItemNodeBody←[position, length, ConcreteRightSideItemropeProdProcs, data]]]; END; -- ConcreteRightSideItemmodIdProd ConcreteRightSideItemmodIdProdProcs: PUBLIC ConcreteRightSideItemNodeProcs ← NEW[ConcreteRightSideItemNodeProcsBody ← [ConcreteRightSideItemmodIdProdFormRightSideContext, ConcreteRightSideItemmodIdProdFormNameList, ConcreteRightSideItemmodIdProdFormTypeList, ConcreteRightSideItemmodIdProdFormNodeVarAssignCode, ConcreteRightSideItemmodIdProdSyntaxRightSideFileCode]]; BuildConcreteRightSideItemmodIdProdNode: PUBLIC PROC[position: INT, length: INT, ModId: ModIdNode] RETURNS[ConcreteRightSideItemNode] = BEGIN data: ConcreteRightSideItemmodIdProdData ← NEW[ConcreteRightSideItemmodIdProdDataBody←[ ModId]]; RETURN[NEW[ConcreteRightSideItemNodeBody←[position, length, ConcreteRightSideItemmodIdProdProcs, data]]]; END; -- BuildExpmodIdProd BuildExpmodIdProdProcs: PUBLIC BuildExpNodeProcs ← NEW[BuildExpNodeProcsBody ← [BuildExpmodIdProdFormBuildExpCode, BuildExpmodIdProdFormBuildPositionCode, BuildExpmodIdProdFormBuildLengthCode]]; BuildBuildExpmodIdProdNode: PUBLIC PROC[position: INT, length: INT, ModId: ModIdNode] RETURNS[BuildExpNode] = BEGIN data: BuildExpmodIdProdData ← NEW[BuildExpmodIdProdDataBody←[ ModId]]; RETURN[NEW[BuildExpNodeBody←[position, length, BuildExpmodIdProdProcs, data]]]; END; -- BuildExpbuildNodeProd BuildExpbuildNodeProdProcs: PUBLIC BuildExpNodeProcs ← NEW[BuildExpNodeProcsBody ← [BuildExpbuildNodeProdFormBuildExpCode, BuildExpbuildNodeProdFormBuildPositionCode, BuildExpbuildNodeProdFormBuildLengthCode]]; BuildBuildExpbuildNodeProdNode: PUBLIC PROC[position: INT, length: INT, ModId: ModIdNode, IntervalExp: IntervalExpNode, BuildExpList: BuildExpListNode] RETURNS[BuildExpNode] = BEGIN data: BuildExpbuildNodeProdData ← NEW[BuildExpbuildNodeProdDataBody←[ ModId, IntervalExp, BuildExpList]]; RETURN[NEW[BuildExpNodeBody←[position, length, BuildExpbuildNodeProdProcs, data]]]; END; -- BuildExpListemptyProd BuildExpListemptyProdProcs: PUBLIC BuildExpListNodeProcs ← NEW[BuildExpListNodeProcsBody ← [BuildExpListemptyProdFormBuildExpListCode, BuildExpListemptyProdFormBuildPositionCode, BuildExpListemptyProdFormBuildLengthCode]]; BuildBuildExpListemptyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[BuildExpListNode] = BEGIN RETURN[NEW[BuildExpListNodeBody←[position, length, BuildExpListemptyProdProcs, NIL]]]; END; -- BuildExpListoneProd BuildExpListoneProdProcs: PUBLIC BuildExpListNodeProcs ← NEW[BuildExpListNodeProcsBody ← [BuildExpListoneProdFormBuildExpListCode, BuildExpListoneProdFormBuildPositionCode, BuildExpListoneProdFormBuildLengthCode]]; BuildBuildExpListoneProdNode: PUBLIC PROC[position: INT, length: INT, BuildExp: BuildExpNode] RETURNS[BuildExpListNode] = BEGIN data: BuildExpListoneProdData ← NEW[BuildExpListoneProdDataBody←[ BuildExp]]; RETURN[NEW[BuildExpListNodeBody←[position, length, BuildExpListoneProdProcs, data]]]; END; -- BuildExpListmanyProd BuildExpListmanyProdProcs: PUBLIC BuildExpListNodeProcs ← NEW[BuildExpListNodeProcsBody ← [BuildExpListmanyProdFormBuildExpListCode, BuildExpListmanyProdFormBuildPositionCode, BuildExpListmanyProdFormBuildLengthCode]]; BuildBuildExpListmanyProdNode: PUBLIC PROC[position: INT, length: INT, BuildExpList: BuildExpListNode, BuildExp: BuildExpNode] RETURNS[BuildExpListNode] = BEGIN data: BuildExpListmanyProdData ← NEW[BuildExpListmanyProdDataBody←[ BuildExpList, BuildExp]]; RETURN[NEW[BuildExpListNodeBody←[position, length, BuildExpListmanyProdProcs, data]]]; END; -- IntervalExpnoneProd IntervalExpnoneProdProcs: PUBLIC IntervalExpNodeProcs ← NEW[IntervalExpNodeProcsBody ← [IntervalExpnoneProdFormIntervalBuildPositionCode, IntervalExpnoneProdFormIntervalBuildLengthCode]]; BuildIntervalExpnoneProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[IntervalExpNode] = BEGIN RETURN[NEW[IntervalExpNodeBody←[position, length, IntervalExpnoneProdProcs, NIL]]]; END; -- IntervalExppresentProd IntervalExppresentProdProcs: PUBLIC IntervalExpNodeProcs ← NEW[IntervalExpNodeProcsBody ← [IntervalExppresentProdFormIntervalBuildPositionCode, IntervalExppresentProdFormIntervalBuildLengthCode]]; BuildIntervalExppresentProdNode: PUBLIC PROC[position: INT, length: INT, IntervalFormform: IntervalForm, ModIdleft: ModIdNode, ModIdright: ModIdNode] RETURNS[IntervalExpNode] = BEGIN data: IntervalExppresentProdData ← NEW[IntervalExppresentProdDataBody←[ IntervalFormform, ModIdleft, ModIdright]]; RETURN[NEW[IntervalExpNodeBody←[position, length, IntervalExppresentProdProcs, data]]]; END; END..