DIRECTORY ThreeC4BaseDecl1Def, ThreeC4RecFcnImplAbGramDef, ThreeC4BasicAbTypesDef; ThreeC4RecFcnImplAbGramImpl: CEDAR PROGRAM IMPORTS ThreeC4RecFcnImplAbGramDef EXPORTS ThreeC4RecFcnImplAbGramDef= BEGIN OPEN ThreeC4BaseDecl1Def, ThreeC4RecFcnImplAbGramDef, ThreeC4BasicAbTypesDef; -- AbProductionFcnImplProd AbProductionFcnImplProdProcs: PUBLIC AbProductionFcnImplNodeProcs ← NEW[AbProductionFcnImplNodeProcsBody ← [AbProductionFcnImplProdImplFileCode]]; BuildAbProductionFcnImplProdNode: PUBLIC PROC[position: INT, length: INT, ModId: ModIdNode, ModIdList: ModIdListNode, RecFcnImplList: RecFcnImplListNode] RETURNS[AbProductionFcnImplNode] = BEGIN data: AbProductionFcnImplProdData ← NEW[AbProductionFcnImplProdDataBody←[ ModId, ModIdList, RecFcnImplList]]; RETURN[NEW[AbProductionFcnImplNodeBody←[position, length, AbProductionFcnImplProdProcs, data]]]; END; -- RecFcnImplListoneProd RecFcnImplListoneProdProcs: PUBLIC RecFcnImplListNodeProcs ← NEW[RecFcnImplListNodeProcsBody ← [RecFcnImplListoneProdProdImplFileCode]]; BuildRecFcnImplListoneProdNode: PUBLIC PROC[position: INT, length: INT, Identifier: IdentifierNode, IdList: IdListNode, RecExpression: RecExpressionNode] RETURNS[RecFcnImplListNode] = BEGIN data: RecFcnImplListoneProdData ← NEW[RecFcnImplListoneProdDataBody←[ Identifier, IdList, RecExpression]]; RETURN[NEW[RecFcnImplListNodeBody←[position, length, RecFcnImplListoneProdProcs, data]]]; END; -- RecFcnImplListmanyProd RecFcnImplListmanyProdProcs: PUBLIC RecFcnImplListNodeProcs ← NEW[RecFcnImplListNodeProcsBody ← [RecFcnImplListmanyProdProdImplFileCode]]; BuildRecFcnImplListmanyProdNode: PUBLIC PROC[position: INT, length: INT, RecFcnImplLista: RecFcnImplListNode, RecFcnImplListb: RecFcnImplListNode] RETURNS[RecFcnImplListNode] = BEGIN data: RecFcnImplListmanyProdData ← NEW[RecFcnImplListmanyProdDataBody←[ RecFcnImplLista, RecFcnImplListb]]; RETURN[NEW[RecFcnImplListNodeBody←[position, length, RecFcnImplListmanyProdProcs, data]]]; END; -- RecExpressionwithWhereListProd RecExpressionwithWhereListProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressionwithWhereListProdCompForArgs, RecExpressionwithWhereListProdCompForVars, RecExpressionwithWhereListProdCountVals, RecExpressionwithWhereListProdFormFcnImplGraph]]; BuildRecExpressionwithWhereListProdNode: PUBLIC PROC[position: INT, length: INT, RecExpression: RecExpressionNode, WhereExpSeq: WhereExpSeqNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressionwithWhereListProdData ← NEW[RecExpressionwithWhereListProdDataBody←[ RecExpression, WhereExpSeq]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressionwithWhereListProdProcs, data]]]; END; -- RecExpressioncondProd RecExpressioncondProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressioncondProdCompForArgs, RecExpressioncondProdCompForVars, RecExpressioncondProdCountVals, RecExpressioncondProdFormFcnImplGraph]]; BuildRecExpressioncondProdNode: PUBLIC PROC[position: INT, length: INT, RecExpressionifClause: RecExpressionNode, RecExpressionthenClause: RecExpressionNode, RecExpressionelseClause: RecExpressionNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressioncondProdData ← NEW[RecExpressioncondProdDataBody←[ RecExpressionifClause, RecExpressionthenClause, RecExpressionelseClause]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressioncondProdProcs, data]]]; END; -- RecExpressioncallProd RecExpressioncallProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressioncallProdCompForArgs, RecExpressioncallProdCompForVars, RecExpressioncallProdCountVals, RecExpressioncallProdFormFcnImplGraph]]; BuildRecExpressioncallProdNode: PUBLIC PROC[position: INT, length: INT, Identifier: IdentifierNode, RecExpSeq: RecExpSeqNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressioncallProdData ← NEW[RecExpressioncallProdDataBody←[ Identifier, RecExpSeq]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressioncallProdProcs, data]]]; END; -- RecExpressionseqProd RecExpressionseqProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressionseqProdCompForArgs, RecExpressionseqProdCompForVars, RecExpressionseqProdCountVals, RecExpressionseqProdFormFcnImplGraph]]; BuildRecExpressionseqProdNode: PUBLIC PROC[position: INT, length: INT, RecExpSeq: RecExpSeqNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressionseqProdData ← NEW[RecExpressionseqProdDataBody←[ RecExpSeq]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressionseqProdProcs, data]]]; END; -- RecExpressionidProd RecExpressionidProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressionidProdCompForArgs, RecExpressionidProdCompForVars, RecExpressionidProdCountVals, RecExpressionidProdFormFcnImplGraph]]; BuildRecExpressionidProdNode: PUBLIC PROC[position: INT, length: INT, Identifier: IdentifierNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressionidProdData ← NEW[RecExpressionidProdDataBody←[ Identifier]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressionidProdProcs, data]]]; END; -- RecExpressionmodIdProd RecExpressionmodIdProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressionmodIdProdCompForArgs, RecExpressionmodIdProdCompForVars, RecExpressionmodIdProdCountVals, RecExpressionmodIdProdFormFcnImplGraph]]; BuildRecExpressionmodIdProdNode: PUBLIC PROC[position: INT, length: INT, Identifiera: IdentifierNode, Identifierb: IdentifierNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressionmodIdProdData ← NEW[RecExpressionmodIdProdDataBody←[ Identifiera, Identifierb]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressionmodIdProdProcs, data]]]; END; -- RecExpressionropeProd RecExpressionropeProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressionropeProdCompForArgs, RecExpressionropeProdCompForVars, RecExpressionropeProdCountVals, RecExpressionropeProdFormFcnImplGraph]]; BuildRecExpressionropeProdNode: PUBLIC PROC[position: INT, length: INT, Rope: RopeNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressionropeProdData ← NEW[RecExpressionropeProdDataBody←[ Rope]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressionropeProdProcs, data]]]; END; -- RecExpressionnumbProd RecExpressionnumbProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressionnumbProdCompForArgs, RecExpressionnumbProdCompForVars, RecExpressionnumbProdCountVals, RecExpressionnumbProdFormFcnImplGraph]]; BuildRecExpressionnumbProdNode: PUBLIC PROC[position: INT, length: INT, NonNegInteger: NonNegIntegerNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressionnumbProdData ← NEW[RecExpressionnumbProdDataBody←[ NonNegInteger]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressionnumbProdProcs, data]]]; END; -- RecExpressionsourcePositionProd RecExpressionsourcePositionProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressionsourcePositionProdCompForArgs, RecExpressionsourcePositionProdCompForVars, RecExpressionsourcePositionProdCountVals, RecExpressionsourcePositionProdFormFcnImplGraph]]; BuildRecExpressionsourcePositionProdNode: PUBLIC PROC[position: INT, length: INT, ModId: ModIdNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressionsourcePositionProdData ← NEW[RecExpressionsourcePositionProdDataBody←[ ModId]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressionsourcePositionProdProcs, data]]]; END; -- RecExpressionsourceLengthProd RecExpressionsourceLengthProdProcs: PUBLIC RecExpressionNodeProcs ← NEW[RecExpressionNodeProcsBody ← [RecExpressionsourceLengthProdCompForArgs, RecExpressionsourceLengthProdCompForVars, RecExpressionsourceLengthProdCountVals, RecExpressionsourceLengthProdFormFcnImplGraph]]; BuildRecExpressionsourceLengthProdNode: PUBLIC PROC[position: INT, length: INT, ModId: ModIdNode] RETURNS[RecExpressionNode] = BEGIN data: RecExpressionsourceLengthProdData ← NEW[RecExpressionsourceLengthProdDataBody←[ ModId]]; RETURN[NEW[RecExpressionNodeBody←[position, length, RecExpressionsourceLengthProdProcs, data]]]; END; -- RecExpSeqemptyProd RecExpSeqemptyProdProcs: PUBLIC RecExpSeqNodeProcs ← NEW[RecExpSeqNodeProcsBody ← [RecExpSeqemptyProdCompForArgs, RecExpSeqemptyProdCompForVars, RecExpSeqemptyProdCountVals, RecExpSeqemptyProdFormFcnImplGraph]]; BuildRecExpSeqemptyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[RecExpSeqNode] = BEGIN RETURN[NEW[RecExpSeqNodeBody←[position, length, RecExpSeqemptyProdProcs, NIL]]]; END; -- RecExpSeqoneProd RecExpSeqoneProdProcs: PUBLIC RecExpSeqNodeProcs ← NEW[RecExpSeqNodeProcsBody ← [RecExpSeqoneProdCompForArgs, RecExpSeqoneProdCompForVars, RecExpSeqoneProdCountVals, RecExpSeqoneProdFormFcnImplGraph]]; BuildRecExpSeqoneProdNode: PUBLIC PROC[position: INT, length: INT, RecExpression: RecExpressionNode] RETURNS[RecExpSeqNode] = BEGIN data: RecExpSeqoneProdData ← NEW[RecExpSeqoneProdDataBody←[ RecExpression]]; RETURN[NEW[RecExpSeqNodeBody←[position, length, RecExpSeqoneProdProcs, data]]]; END; -- RecExpSeqmanyProd RecExpSeqmanyProdProcs: PUBLIC RecExpSeqNodeProcs ← NEW[RecExpSeqNodeProcsBody ← [RecExpSeqmanyProdCompForArgs, RecExpSeqmanyProdCompForVars, RecExpSeqmanyProdCountVals, RecExpSeqmanyProdFormFcnImplGraph]]; BuildRecExpSeqmanyProdNode: PUBLIC PROC[position: INT, length: INT, RecExpSeqa: RecExpSeqNode, RecExpSeqb: RecExpSeqNode] RETURNS[RecExpSeqNode] = BEGIN data: RecExpSeqmanyProdData ← NEW[RecExpSeqmanyProdDataBody←[ RecExpSeqa, RecExpSeqb]]; RETURN[NEW[RecExpSeqNodeBody←[position, length, RecExpSeqmanyProdProcs, data]]]; END; -- WhereExpSeqoneProd WhereExpSeqoneProdProcs: PUBLIC WhereExpSeqNodeProcs ← NEW[WhereExpSeqNodeProcsBody ← [WhereExpSeqoneProdCompWhere, WhereExpSeqoneProdFormFcnImplWhereGraph]]; BuildWhereExpSeqoneProdNode: PUBLIC PROC[position: INT, length: INT, IdList: IdListNode, RecExpression: RecExpressionNode] RETURNS[WhereExpSeqNode] = BEGIN data: WhereExpSeqoneProdData ← NEW[WhereExpSeqoneProdDataBody←[ IdList, RecExpression]]; RETURN[NEW[WhereExpSeqNodeBody←[position, length, WhereExpSeqoneProdProcs, data]]]; END; -- WhereExpSeqmanyProd WhereExpSeqmanyProdProcs: PUBLIC WhereExpSeqNodeProcs ← NEW[WhereExpSeqNodeProcsBody ← [WhereExpSeqmanyProdCompWhere, WhereExpSeqmanyProdFormFcnImplWhereGraph]]; BuildWhereExpSeqmanyProdNode: PUBLIC PROC[position: INT, length: INT, WhereExpSeqa: WhereExpSeqNode, WhereExpSeqb: WhereExpSeqNode] RETURNS[WhereExpSeqNode] = BEGIN data: WhereExpSeqmanyProdData ← NEW[WhereExpSeqmanyProdDataBody←[ WhereExpSeqa, WhereExpSeqb]]; RETURN[NEW[WhereExpSeqNodeBody←[position, length, WhereExpSeqmanyProdProcs, data]]]; END; END..