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..