DIRECTORY ThreeC4RecFcnDeclDef, ThreeC4BaseDecl1Def, ThreeC4BasicAbTypesDef, ThreeC4BaseDecl2Def; ThreeC4CProdAbGramDef: CEDAR DEFINITIONS = BEGIN OPEN ThreeC4RecFcnDeclDef, ThreeC4BaseDecl1Def, ThreeC4BasicAbTypesDef, ThreeC4BaseDecl2Def; IntervalForm: TYPE = {closed, leftOpen, rightOpen, fullOpen}; EqualIntervalForm: PROC[IntervalForm, IntervalForm] RETURNS[BOOLEAN]; DotedNameFill: PROC[NameNode] RETURNS[CodeFillerNode]; FormBuildExpCodeProcType: TYPE = PROC[REF ANY, BOOLEAN, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, TypeNode, UsageNode]; FormBuildExpListCodeProcType: TYPE = PROC[REF ANY, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, TypeListNode, UsageNode]; FormBuildPositionCodeProcType: TYPE = PROC[REF ANY, BOOLEAN, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode]; FormBuildLengthCodeProcType: TYPE = PROC[REF ANY, BOOLEAN, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode]; FormIntervalBuildPositionCodeProcType: TYPE = PROC[REF ANY, BuildExpListNode, BOOLEAN, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode]; FormIntervalBuildLengthCodeProcType: TYPE = PROC[REF ANY, BuildExpListNode, BOOLEAN, LookupContextNode, UsageNode] RETURNS[MesaCodeNode, UsageNode]; -- ConcreteProductionProd ConcreteProductionProdData: TYPE = REF ConcreteProductionProdDataBody; ConcreteProductionProdDataBody: TYPE = RECORD[ ModId: ModIdNode, ConcreteRightSideList: ConcreteRightSideListNode, BuildExp: BuildExpNode]; ConcreteProductionProdProcs: ConcreteProductionNodeProcs; BuildConcreteProductionProdNode: PROC[position: INT, length: INT, ModId: ModIdNode, ConcreteRightSideList: ConcreteRightSideListNode, BuildExp: BuildExpNode] RETURNS[ConcreteProductionNode]; ConcreteProductionProdCollectProductions: CollectProductionsProcType; ConcreteProductionProdImplFileCode: ImplFileCodeProcType; ConcreteProductionProdLinkFileCode: LinkFileCodeProcType; ConcreteProductionProdSyntaxFileCodes: SyntaxFileCodesProcType; --ConcreteRightSideList ConcreteRightSideListNode: TYPE = REF ConcreteRightSideListNodeBody; ConcreteRightSideListNodeBody: TYPE = RECORD[ position: INT, length: INT, procs: ConcreteRightSideListNodeProcs, data: REF ANY]; ConcreteRightSideListNodeProcs: TYPE = REF ConcreteRightSideListNodeProcsBody; ConcreteRightSideListNodeProcsBody: TYPE = RECORD[ FormRightSideContext: FormRightSideContextProcType, FormNameList: FormNameListProcType, FormTypeList: FormTypeListProcType, FormNodeVarAssignCode: FormNodeVarAssignCodeProcType, SyntaxRightSideFileCode: SyntaxRightSideFileCodeProcType]; -- ConcreteRightSideListemptyProd ConcreteRightSideListemptyProdData: TYPE = REF ConcreteRightSideListemptyProdDataBody; ConcreteRightSideListemptyProdDataBody: TYPE = RECORD[ ]; ConcreteRightSideListemptyProdProcs: ConcreteRightSideListNodeProcs; BuildConcreteRightSideListemptyProdNode: PROC[position: INT, length: INT] RETURNS[ConcreteRightSideListNode]; ConcreteRightSideListemptyProdFormRightSideContext: FormRightSideContextProcType; ConcreteRightSideListemptyProdFormNameList: FormNameListProcType; ConcreteRightSideListemptyProdFormTypeList: FormTypeListProcType; ConcreteRightSideListemptyProdFormNodeVarAssignCode: FormNodeVarAssignCodeProcType; ConcreteRightSideListemptyProdSyntaxRightSideFileCode: SyntaxRightSideFileCodeProcType; -- ConcreteRightSideListoneProd ConcreteRightSideListoneProdData: TYPE = REF ConcreteRightSideListoneProdDataBody; ConcreteRightSideListoneProdDataBody: TYPE = RECORD[ ConcreteRightSideItem: ConcreteRightSideItemNode]; ConcreteRightSideListoneProdProcs: ConcreteRightSideListNodeProcs; BuildConcreteRightSideListoneProdNode: PROC[position: INT, length: INT, ConcreteRightSideItem: ConcreteRightSideItemNode] RETURNS[ConcreteRightSideListNode]; ConcreteRightSideListoneProdFormRightSideContext: FormRightSideContextProcType; ConcreteRightSideListoneProdFormNameList: FormNameListProcType; ConcreteRightSideListoneProdFormTypeList: FormTypeListProcType; ConcreteRightSideListoneProdFormNodeVarAssignCode: FormNodeVarAssignCodeProcType; ConcreteRightSideListoneProdSyntaxRightSideFileCode: SyntaxRightSideFileCodeProcType; -- ConcreteRightSideListmanyProd ConcreteRightSideListmanyProdData: TYPE = REF ConcreteRightSideListmanyProdDataBody; ConcreteRightSideListmanyProdDataBody: TYPE = RECORD[ ConcreteRightSideList: ConcreteRightSideListNode, ConcreteRightSideItem: ConcreteRightSideItemNode]; ConcreteRightSideListmanyProdProcs: ConcreteRightSideListNodeProcs; BuildConcreteRightSideListmanyProdNode: PROC[position: INT, length: INT, ConcreteRightSideList: ConcreteRightSideListNode, ConcreteRightSideItem: ConcreteRightSideItemNode] RETURNS[ConcreteRightSideListNode]; ConcreteRightSideListmanyProdFormRightSideContext: FormRightSideContextProcType; ConcreteRightSideListmanyProdFormNameList: FormNameListProcType; ConcreteRightSideListmanyProdFormTypeList: FormTypeListProcType; ConcreteRightSideListmanyProdFormNodeVarAssignCode: FormNodeVarAssignCodeProcType; ConcreteRightSideListmanyProdSyntaxRightSideFileCode: SyntaxRightSideFileCodeProcType; --ConcreteRightSideItem ConcreteRightSideItemNode: TYPE = REF ConcreteRightSideItemNodeBody; ConcreteRightSideItemNodeBody: TYPE = RECORD[ position: INT, length: INT, procs: ConcreteRightSideItemNodeProcs, data: REF ANY]; ConcreteRightSideItemNodeProcs: TYPE = REF ConcreteRightSideItemNodeProcsBody; ConcreteRightSideItemNodeProcsBody: TYPE = RECORD[ FormRightSideContext: FormRightSideContextProcType, FormNameList: FormNameListProcType, FormTypeList: FormTypeListProcType, FormNodeVarAssignCode: FormNodeVarAssignCodeProcType, SyntaxRightSideFileCode: SyntaxRightSideFileCodeProcType]; -- ConcreteRightSideItemropeProd ConcreteRightSideItemropeProdData: TYPE = REF ConcreteRightSideItemropeProdDataBody; ConcreteRightSideItemropeProdDataBody: TYPE = RECORD[ Rope: RopeNode]; ConcreteRightSideItemropeProdProcs: ConcreteRightSideItemNodeProcs; BuildConcreteRightSideItemropeProdNode: PROC[position: INT, length: INT, Rope: RopeNode] RETURNS[ConcreteRightSideItemNode]; ConcreteRightSideItemropeProdFormRightSideContext: FormRightSideContextProcType; ConcreteRightSideItemropeProdFormNameList: FormNameListProcType; ConcreteRightSideItemropeProdFormTypeList: FormTypeListProcType; ConcreteRightSideItemropeProdFormNodeVarAssignCode: FormNodeVarAssignCodeProcType; ConcreteRightSideItemropeProdSyntaxRightSideFileCode: SyntaxRightSideFileCodeProcType; -- ConcreteRightSideItemmodIdProd ConcreteRightSideItemmodIdProdData: TYPE = REF ConcreteRightSideItemmodIdProdDataBody; ConcreteRightSideItemmodIdProdDataBody: TYPE = RECORD[ ModId: ModIdNode]; ConcreteRightSideItemmodIdProdProcs: ConcreteRightSideItemNodeProcs; BuildConcreteRightSideItemmodIdProdNode: PROC[position: INT, length: INT, ModId: ModIdNode] RETURNS[ConcreteRightSideItemNode]; ConcreteRightSideItemmodIdProdFormRightSideContext: FormRightSideContextProcType; ConcreteRightSideItemmodIdProdFormNameList: FormNameListProcType; ConcreteRightSideItemmodIdProdFormTypeList: FormTypeListProcType; ConcreteRightSideItemmodIdProdFormNodeVarAssignCode: FormNodeVarAssignCodeProcType; ConcreteRightSideItemmodIdProdSyntaxRightSideFileCode: SyntaxRightSideFileCodeProcType; --BuildExp BuildExpNode: TYPE = REF BuildExpNodeBody; BuildExpNodeBody: TYPE = RECORD[ position: INT, length: INT, procs: BuildExpNodeProcs, data: REF ANY]; BuildExpNodeProcs: TYPE = REF BuildExpNodeProcsBody; BuildExpNodeProcsBody: TYPE = RECORD[ FormBuildExpCode: FormBuildExpCodeProcType, FormBuildPositionCode: FormBuildPositionCodeProcType, FormBuildLengthCode: FormBuildLengthCodeProcType]; -- BuildExpmodIdProd BuildExpmodIdProdData: TYPE = REF BuildExpmodIdProdDataBody; BuildExpmodIdProdDataBody: TYPE = RECORD[ ModId: ModIdNode]; BuildExpmodIdProdProcs: BuildExpNodeProcs; BuildBuildExpmodIdProdNode: PROC[position: INT, length: INT, ModId: ModIdNode] RETURNS[BuildExpNode]; BuildExpmodIdProdFormBuildExpCode: FormBuildExpCodeProcType; BuildExpmodIdProdFormBuildPositionCode: FormBuildPositionCodeProcType; BuildExpmodIdProdFormBuildLengthCode: FormBuildLengthCodeProcType; -- BuildExpbuildNodeProd BuildExpbuildNodeProdData: TYPE = REF BuildExpbuildNodeProdDataBody; BuildExpbuildNodeProdDataBody: TYPE = RECORD[ ModId: ModIdNode, IntervalExp: IntervalExpNode, BuildExpList: BuildExpListNode]; BuildExpbuildNodeProdProcs: BuildExpNodeProcs; BuildBuildExpbuildNodeProdNode: PROC[position: INT, length: INT, ModId: ModIdNode, IntervalExp: IntervalExpNode, BuildExpList: BuildExpListNode] RETURNS[BuildExpNode]; BuildExpbuildNodeProdFormBuildExpCode: FormBuildExpCodeProcType; BuildExpbuildNodeProdFormBuildPositionCode: FormBuildPositionCodeProcType; BuildExpbuildNodeProdFormBuildLengthCode: FormBuildLengthCodeProcType; --BuildExpList BuildExpListNode: TYPE = REF BuildExpListNodeBody; BuildExpListNodeBody: TYPE = RECORD[ position: INT, length: INT, procs: BuildExpListNodeProcs, data: REF ANY]; BuildExpListNodeProcs: TYPE = REF BuildExpListNodeProcsBody; BuildExpListNodeProcsBody: TYPE = RECORD[ FormBuildExpListCode: FormBuildExpListCodeProcType, FormBuildPositionCode: FormBuildPositionCodeProcType, FormBuildLengthCode: FormBuildLengthCodeProcType]; -- BuildExpListemptyProd BuildExpListemptyProdData: TYPE = REF BuildExpListemptyProdDataBody; BuildExpListemptyProdDataBody: TYPE = RECORD[ ]; BuildExpListemptyProdProcs: BuildExpListNodeProcs; BuildBuildExpListemptyProdNode: PROC[position: INT, length: INT] RETURNS[BuildExpListNode]; BuildExpListemptyProdFormBuildExpListCode: FormBuildExpListCodeProcType; BuildExpListemptyProdFormBuildPositionCode: FormBuildPositionCodeProcType; BuildExpListemptyProdFormBuildLengthCode: FormBuildLengthCodeProcType; -- BuildExpListoneProd BuildExpListoneProdData: TYPE = REF BuildExpListoneProdDataBody; BuildExpListoneProdDataBody: TYPE = RECORD[ BuildExp: BuildExpNode]; BuildExpListoneProdProcs: BuildExpListNodeProcs; BuildBuildExpListoneProdNode: PROC[position: INT, length: INT, BuildExp: BuildExpNode] RETURNS[BuildExpListNode]; BuildExpListoneProdFormBuildExpListCode: FormBuildExpListCodeProcType; BuildExpListoneProdFormBuildPositionCode: FormBuildPositionCodeProcType; BuildExpListoneProdFormBuildLengthCode: FormBuildLengthCodeProcType; -- BuildExpListmanyProd BuildExpListmanyProdData: TYPE = REF BuildExpListmanyProdDataBody; BuildExpListmanyProdDataBody: TYPE = RECORD[ BuildExpList: BuildExpListNode, BuildExp: BuildExpNode]; BuildExpListmanyProdProcs: BuildExpListNodeProcs; BuildBuildExpListmanyProdNode: PROC[position: INT, length: INT, BuildExpList: BuildExpListNode, BuildExp: BuildExpNode] RETURNS[BuildExpListNode]; BuildExpListmanyProdFormBuildExpListCode: FormBuildExpListCodeProcType; BuildExpListmanyProdFormBuildPositionCode: FormBuildPositionCodeProcType; BuildExpListmanyProdFormBuildLengthCode: FormBuildLengthCodeProcType; --IntervalExp IntervalExpNode: TYPE = REF IntervalExpNodeBody; IntervalExpNodeBody: TYPE = RECORD[ position: INT, length: INT, procs: IntervalExpNodeProcs, data: REF ANY]; IntervalExpNodeProcs: TYPE = REF IntervalExpNodeProcsBody; IntervalExpNodeProcsBody: TYPE = RECORD[ FormIntervalBuildPositionCode: FormIntervalBuildPositionCodeProcType, FormIntervalBuildLengthCode: FormIntervalBuildLengthCodeProcType]; -- IntervalExpnoneProd IntervalExpnoneProdData: TYPE = REF IntervalExpnoneProdDataBody; IntervalExpnoneProdDataBody: TYPE = RECORD[ ]; IntervalExpnoneProdProcs: IntervalExpNodeProcs; BuildIntervalExpnoneProdNode: PROC[position: INT, length: INT] RETURNS[IntervalExpNode]; IntervalExpnoneProdFormIntervalBuildPositionCode: FormIntervalBuildPositionCodeProcType; IntervalExpnoneProdFormIntervalBuildLengthCode: FormIntervalBuildLengthCodeProcType; -- IntervalExppresentProd IntervalExppresentProdData: TYPE = REF IntervalExppresentProdDataBody; IntervalExppresentProdDataBody: TYPE = RECORD[ IntervalFormform: IntervalForm, ModIdleft: ModIdNode, ModIdright: ModIdNode]; IntervalExppresentProdProcs: IntervalExpNodeProcs; BuildIntervalExppresentProdNode: PROC[position: INT, length: INT, IntervalFormform: IntervalForm, ModIdleft: ModIdNode, ModIdright: ModIdNode] RETURNS[IntervalExpNode]; IntervalExppresentProdFormIntervalBuildPositionCode: FormIntervalBuildPositionCodeProcType; IntervalExppresentProdFormIntervalBuildLengthCode: FormIntervalBuildLengthCodeProcType; END..