-- SaffronAG6Impl.mesa -- Copyright Ó 1987 by Xerox Corporation. All rights reserved. -- Generated by hederman.pa at August 17, 1987 4:33:11 pm PDT -- using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT DIRECTORY SaffronAG6Def, SaffronGenericDef, SaffronATDef; SaffronAG6Impl: CEDAR PROGRAM IMPORTS SaffronAG6Def EXPORTS SaffronAG6Def= BEGIN OPEN SaffronAG6Def, SaffronGenericDef, SaffronATDef; -- TypeExptypeidProd TypeExptypeidProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExptypeidProdMakeType]]; BuildTypeExptypeidProdNode: PUBLIC PROC[position: INT, length: INT, TypeId: TypeIdNode] RETURNS[TypeExpNode] = BEGIN data: TypeExptypeidProdData _ NEW[TypeExptypeidProdDataBody _ [ TypeId]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExptypeidProdProcs, data]]]; END; -- TypeExpsubrangeProd TypeExpsubrangeProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExpsubrangeProdMakeType]]; BuildTypeExpsubrangeProdNode: PUBLIC PROC[position: INT, length: INT, Subrange: SubrangeNode] RETURNS[TypeExpNode] = BEGIN data: TypeExpsubrangeProdData _ NEW[TypeExpsubrangeProdDataBody _ [ Subrange]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExpsubrangeProdProcs, data]]]; END; -- TypeExpenumProd TypeExpenumProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExpenumProdMakeType]]; BuildTypeExpenumProdNode: PUBLIC PROC[position: INT, length: INT, MachineDependent: MachineDependentNode, ElementList: ElementListNode] RETURNS[TypeExpNode] = BEGIN data: TypeExpenumProdData _ NEW[TypeExpenumProdDataBody _ [ MachineDependent, ElementList]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExpenumProdProcs, data]]]; END; -- TypeExprecordProd TypeExprecordProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExprecordProdMakeType]]; BuildTypeExprecordProdNode: PUBLIC PROC[position: INT, length: INT, MachineDependent: MachineDependentNode, Monitored: MonitoredNode, RecList: RecListNode] RETURNS[TypeExpNode] = BEGIN data: TypeExprecordProdData _ NEW[TypeExprecordProdDataBody _ [ MachineDependent, Monitored, RecList]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExprecordProdProcs, data]]]; END; -- TypeExppointerProd TypeExppointerProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExppointerProdMakeType]]; BuildTypeExppointerProdNode: PUBLIC PROC[position: INT, length: INT, Ordered: OrderedNode, Base: BaseNode, PointerType: PointerTypeNode] RETURNS[TypeExpNode] = BEGIN data: TypeExppointerProdData _ NEW[TypeExppointerProdDataBody _ [ Ordered, Base, PointerType]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExppointerProdProcs, data]]]; END; -- TypeExpvarProd TypeExpvarProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExpvarProdMakeType]]; BuildTypeExpvarProdNode: PUBLIC PROC[position: INT, length: INT, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExpvarProdData _ NEW[TypeExpvarProdDataBody _ [ TypeExp]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExpvarProdProcs, data]]]; END; -- TypeExprefProd TypeExprefProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExprefProdMakeType]]; BuildTypeExprefProdNode: PUBLIC PROC[position: INT, length: INT, ReadOnly: ReadOnlyNode, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExprefProdData _ NEW[TypeExprefProdDataBody _ [ ReadOnly, TypeExp]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExprefProdProcs, data]]]; END; -- TypeExprefanyProd TypeExprefanyProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExprefanyProdMakeType]]; BuildTypeExprefanyProdNode: PUBLIC PROC[position: INT, length: INT, ReadOnly: ReadOnlyNode] RETURNS[TypeExpNode] = BEGIN data: TypeExprefanyProdData _ NEW[TypeExprefanyProdDataBody _ [ ReadOnly]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExprefanyProdProcs, data]]]; END; -- TypeExprefunspecifiedProd TypeExprefunspecifiedProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExprefunspecifiedProdMakeType]]; BuildTypeExprefunspecifiedProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[TypeExpNode] = BEGIN RETURN[NEW[TypeExpNodeBody_[position, length, TypeExprefunspecifiedProdProcs, NIL]]]; END; -- TypeExplistProd TypeExplistProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExplistProdMakeType]]; BuildTypeExplistProdNode: PUBLIC PROC[position: INT, length: INT, ReadOnly: ReadOnlyNode, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExplistProdData _ NEW[TypeExplistProdDataBody _ [ ReadOnly, TypeExp]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExplistProdProcs, data]]]; END; -- TypeExparrayProd TypeExparrayProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExparrayProdMakeType]]; BuildTypeExparrayProdNode: PUBLIC PROC[position: INT, length: INT, Packed: PackedNode, OptType: OptTypeNode, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExparrayProdData _ NEW[TypeExparrayProdDataBody _ [ Packed, OptType, TypeExp]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExparrayProdProcs, data]]]; END; -- TypeExpdescriptorProd TypeExpdescriptorProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExpdescriptorProdMakeType]]; BuildTypeExpdescriptorProdNode: PUBLIC PROC[position: INT, length: INT, ReadOnly: ReadOnlyNode, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExpdescriptorProdData _ NEW[TypeExpdescriptorProdDataBody _ [ ReadOnly, TypeExp]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExpdescriptorProdProcs, data]]]; END; -- TypeExptransferProd TypeExptransferProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExptransferProdMakeType]]; BuildTypeExptransferProdNode: PUBLIC PROC[position: INT, length: INT, Safe: SafeNode, TransferMode: TransferModeNode, Arguments: ArgumentsNode] RETURNS[TypeExpNode] = BEGIN data: TypeExptransferProdData _ NEW[TypeExptransferProdDataBody _ [ Safe, TransferMode, Arguments]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExptransferProdProcs, data]]]; END; -- TypeExprelativeProd TypeExprelativeProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExprelativeProdMakeType]]; BuildTypeExprelativeProdNode: PUBLIC PROC[position: INT, length: INT, TypeId: TypeIdNode, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExprelativeProdData _ NEW[TypeExprelativeProdDataBody _ [ TypeId, TypeExp]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExprelativeProdProcs, data]]]; END; -- TypeExpzoneProd TypeExpzoneProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExpzoneProdMakeType]]; BuildTypeExpzoneProdNode: PUBLIC PROC[position: INT, length: INT, Uncounted: UncountedNode] RETURNS[TypeExpNode] = BEGIN data: TypeExpzoneProdData _ NEW[TypeExpzoneProdDataBody _ [ Uncounted]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExpzoneProdProcs, data]]]; END; -- TypeExplongProd TypeExplongProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExplongProdMakeType]]; BuildTypeExplongProdNode: PUBLIC PROC[position: INT, length: INT, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExplongProdData _ NEW[TypeExplongProdDataBody _ [ TypeExp]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExplongProdProcs, data]]]; END; -- TypeExpframeProd TypeExpframeProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExpframeProdMakeType]]; BuildTypeExpframeProdNode: PUBLIC PROC[position: INT, length: INT, Id: IdNode] RETURNS[TypeExpNode] = BEGIN data: TypeExpframeProdData _ NEW[TypeExpframeProdDataBody _ [ Id]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExpframeProdProcs, data]]]; END; -- TypeExppaintedProd TypeExppaintedProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExppaintedProdMakeType]]; BuildTypeExppaintedProdNode: PUBLIC PROC[position: INT, length: INT, TypeId: TypeIdNode, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExppaintedProdData _ NEW[TypeExppaintedProdDataBody _ [ TypeId, TypeExp]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExppaintedProdProcs, data]]]; END; -- TypeExptypeapplyProd TypeExptypeapplyProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExptypeapplyProdMakeType]]; BuildTypeExptypeapplyProdNode: PUBLIC PROC[position: INT, length: INT, TypeApply: TypeApplyNode] RETURNS[TypeExpNode] = BEGIN data: TypeExptypeapplyProdData _ NEW[TypeExptypeapplyProdDataBody _ [ TypeApply]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExptypeapplyProdProcs, data]]]; END; -- TypeExpunionProd TypeExpunionProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExpunionProdMakeType]]; BuildTypeExpunionProdNode: PUBLIC PROC[position: INT, length: INT, Tag: TagNode, VariantList: VariantListNode] RETURNS[TypeExpNode] = BEGIN data: TypeExpunionProdData _ NEW[TypeExpunionProdDataBody _ [ Tag, VariantList]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExpunionProdProcs, data]]]; END; -- TypeExpsequenceProd TypeExpsequenceProdProcs: PUBLIC TypeExpNodeProcs _ NEW[TypeExpNodeProcsBody _ [TypeExpsequenceProdMakeType]]; BuildTypeExpsequenceProdNode: PUBLIC PROC[position: INT, length: INT, Packed: PackedNode, Tag: TagNode, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExpsequenceProdData _ NEW[TypeExpsequenceProdDataBody _ [ Packed, Tag, TypeExp]]; RETURN[NEW[TypeExpNodeBody_[position, length, TypeExpsequenceProdProcs, data]]]; END; -- TypeIdidProd TypeIdidProdProcs: PUBLIC TypeIdNodeProcs _ NEW[TypeIdNodeProcsBody _ [TypeIdidProdMakeType, TypeIdidProdLookupTypeId]]; BuildTypeIdidProdNode: PUBLIC PROC[position: INT, length: INT, Id: IdNode] RETURNS[TypeIdNode] = BEGIN data: TypeIdidProdData _ NEW[TypeIdidProdDataBody _ [ Id]]; RETURN[NEW[TypeIdNodeBody_[position, length, TypeIdidProdProcs, data]]]; END; -- TypeIdqualifierProd TypeIdqualifierProdProcs: PUBLIC TypeIdNodeProcs _ NEW[TypeIdNodeProcsBody _ [TypeIdqualifierProdMakeType, TypeIdqualifierProdLookupTypeId]]; BuildTypeIdqualifierProdNode: PUBLIC PROC[position: INT, length: INT, TypeId: TypeIdNode, Id: IdNode] RETURNS[TypeIdNode] = BEGIN data: TypeIdqualifierProdData _ NEW[TypeIdqualifierProdDataBody _ [ TypeId, Id]]; RETURN[NEW[TypeIdNodeBody_[position, length, TypeIdqualifierProdProcs, data]]]; END; -- SubrangenamedProd SubrangenamedProdProcs: PUBLIC SubrangeNodeProcs _ NEW[SubrangeNodeProcsBody _ [SubrangenamedProdMakeType]]; BuildSubrangenamedProdNode: PUBLIC PROC[position: INT, length: INT, TypeId: TypeIdNode, Interval: IntervalNode] RETURNS[SubrangeNode] = BEGIN data: SubrangenamedProdData _ NEW[SubrangenamedProdDataBody _ [ TypeId, Interval]]; RETURN[NEW[SubrangeNodeBody_[position, length, SubrangenamedProdProcs, data]]]; END; -- SubrangeunnamedProd SubrangeunnamedProdProcs: PUBLIC SubrangeNodeProcs _ NEW[SubrangeNodeProcsBody _ [SubrangeunnamedProdMakeType]]; BuildSubrangeunnamedProdNode: PUBLIC PROC[position: INT, length: INT, Interval: IntervalNode] RETURNS[SubrangeNode] = BEGIN data: SubrangeunnamedProdData _ NEW[SubrangeunnamedProdDataBody _ [ Interval]]; RETURN[NEW[SubrangeNodeBody_[position, length, SubrangeunnamedProdProcs, data]]]; END; -- IntervalccProd IntervalccProdProcs: PUBLIC IntervalNodeProcs _ NEW[IntervalNodeProcsBody _ [IntervalccProdGetBoundsVal]]; BuildIntervalccProdNode: PUBLIC PROC[position: INT, length: INT, Bounds: BoundsNode] RETURNS[IntervalNode] = BEGIN data: IntervalccProdData _ NEW[IntervalccProdDataBody _ [ Bounds]]; RETURN[NEW[IntervalNodeBody_[position, length, IntervalccProdProcs, data]]]; END; -- IntervalcoProd IntervalcoProdProcs: PUBLIC IntervalNodeProcs _ NEW[IntervalNodeProcsBody _ [IntervalcoProdGetBoundsVal]]; BuildIntervalcoProdNode: PUBLIC PROC[position: INT, length: INT, Bounds: BoundsNode] RETURNS[IntervalNode] = BEGIN data: IntervalcoProdData _ NEW[IntervalcoProdDataBody _ [ Bounds]]; RETURN[NEW[IntervalNodeBody_[position, length, IntervalcoProdProcs, data]]]; END; -- IntervalocProd IntervalocProdProcs: PUBLIC IntervalNodeProcs _ NEW[IntervalNodeProcsBody _ [IntervalocProdGetBoundsVal]]; BuildIntervalocProdNode: PUBLIC PROC[position: INT, length: INT, Bounds: BoundsNode] RETURNS[IntervalNode] = BEGIN data: IntervalocProdData _ NEW[IntervalocProdDataBody _ [ Bounds]]; RETURN[NEW[IntervalNodeBody_[position, length, IntervalocProdProcs, data]]]; END; -- IntervalooProd IntervalooProdProcs: PUBLIC IntervalNodeProcs _ NEW[IntervalNodeProcsBody _ [IntervalooProdGetBoundsVal]]; BuildIntervalooProdNode: PUBLIC PROC[position: INT, length: INT, Bounds: BoundsNode] RETURNS[IntervalNode] = BEGIN data: IntervalooProdData _ NEW[IntervalooProdDataBody _ [ Bounds]]; RETURN[NEW[IntervalNodeBody_[position, length, IntervalooProdProcs, data]]]; END; -- BoundsProd BoundsProdProcs: PUBLIC BoundsNodeProcs _ NEW[BoundsNodeProcsBody _ [BoundsProdGetLowerAndUpper]]; BuildBoundsProdNode: PUBLIC PROC[position: INT, length: INT, Explower: ExpNode, Expupper: ExpNode] RETURNS[BoundsNode] = BEGIN data: BoundsProdData _ NEW[BoundsProdDataBody _ [ Explower, Expupper]]; RETURN[NEW[BoundsNodeBody_[position, length, BoundsProdProcs, data]]]; END; -- MachineDependentyesProd MachineDependentyesProdProcs: PUBLIC MachineDependentNodeProcs _ NEW[MachineDependentNodeProcsBody _ [MachineDependentyesProdGetBooleanVal]]; BuildMachineDependentyesProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[MachineDependentNode] = BEGIN RETURN[NEW[MachineDependentNodeBody_[position, length, MachineDependentyesProdProcs, NIL]]]; END; -- MachineDependentnoProd MachineDependentnoProdProcs: PUBLIC MachineDependentNodeProcs _ NEW[MachineDependentNodeProcsBody _ [MachineDependentnoProdGetBooleanVal]]; BuildMachineDependentnoProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[MachineDependentNode] = BEGIN RETURN[NEW[MachineDependentNodeBody_[position, length, MachineDependentnoProdProcs, NIL]]]; END; -- MonitoredyesProd MonitoredyesProdProcs: PUBLIC MonitoredNodeProcs _ NEW[MonitoredNodeProcsBody _ [MonitoredyesProdGetBooleanVal]]; BuildMonitoredyesProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[MonitoredNode] = BEGIN RETURN[NEW[MonitoredNodeBody_[position, length, MonitoredyesProdProcs, NIL]]]; END; -- MonitorednoProd MonitorednoProdProcs: PUBLIC MonitoredNodeProcs _ NEW[MonitoredNodeProcsBody _ [MonitorednoProdGetBooleanVal]]; BuildMonitorednoProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[MonitoredNode] = BEGIN RETURN[NEW[MonitoredNodeBody_[position, length, MonitorednoProdProcs, NIL]]]; END; -- ElementListemptyProd ElementListemptyProdProcs: PUBLIC ElementListNodeProcs _ NEW[ElementListNodeProcsBody _ [ElementListemptyProdMakeElementList]]; BuildElementListemptyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[ElementListNode] = BEGIN RETURN[NEW[ElementListNodeBody_[position, length, ElementListemptyProdProcs, NIL]]]; END; -- ElementListmoreProd ElementListmoreProdProcs: PUBLIC ElementListNodeProcs _ NEW[ElementListNodeProcsBody _ [ElementListmoreProdMakeElementList]]; BuildElementListmoreProdNode: PUBLIC PROC[position: INT, length: INT, ElementList: ElementListNode, Element: ElementNode] RETURNS[ElementListNode] = BEGIN data: ElementListmoreProdData _ NEW[ElementListmoreProdDataBody _ [ ElementList, Element]]; RETURN[NEW[ElementListNodeBody_[position, length, ElementListmoreProdProcs, data]]]; END; -- ElementidProd ElementidProdProcs: PUBLIC ElementNodeProcs _ NEW[ElementNodeProcsBody _ [ElementidProdElementInfo]]; BuildElementidProdNode: PUBLIC PROC[position: INT, length: INT, Id: IdNode] RETURNS[ElementNode] = BEGIN data: ElementidProdData _ NEW[ElementidProdDataBody _ [ Id]]; RETURN[NEW[ElementNodeBody_[position, length, ElementidProdProcs, data]]]; END; -- ElementidwithrepProd ElementidwithrepProdProcs: PUBLIC ElementNodeProcs _ NEW[ElementNodeProcsBody _ [ElementidwithrepProdElementInfo]]; BuildElementidwithrepProdNode: PUBLIC PROC[position: INT, length: INT, Id: IdNode, Exp: ExpNode] RETURNS[ElementNode] = BEGIN data: ElementidwithrepProdData _ NEW[ElementidwithrepProdDataBody _ [ Id, Exp]]; RETURN[NEW[ElementNodeBody_[position, length, ElementidwithrepProdProcs, data]]]; END; -- ElementanonymousrepProd ElementanonymousrepProdProcs: PUBLIC ElementNodeProcs _ NEW[ElementNodeProcsBody _ [ElementanonymousrepProdElementInfo]]; BuildElementanonymousrepProdNode: PUBLIC PROC[position: INT, length: INT, Exp: ExpNode] RETURNS[ElementNode] = BEGIN data: ElementanonymousrepProdData _ NEW[ElementanonymousrepProdDataBody _ [ Exp]]; RETURN[NEW[ElementNodeBody_[position, length, ElementanonymousrepProdProcs, data]]]; END; -- RecListemptyProd RecListemptyProdProcs: PUBLIC RecListNodeProcs _ NEW[RecListNodeProcsBody _ [RecListemptyProdMakeFieldList]]; BuildRecListemptyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[RecListNode] = BEGIN RETURN[NEW[RecListNodeBody_[position, length, RecListemptyProdProcs, NIL]]]; END; -- RecListpairlistProd RecListpairlistProdProcs: PUBLIC RecListNodeProcs _ NEW[RecListNodeProcsBody _ [RecListpairlistProdMakeFieldList]]; BuildRecListpairlistProdNode: PUBLIC PROC[position: INT, length: INT, PairList: PairListNode] RETURNS[RecListNode] = BEGIN data: RecListpairlistProdData _ NEW[RecListpairlistProdDataBody _ [ PairList]]; RETURN[NEW[RecListNodeBody_[position, length, RecListpairlistProdProcs, data]]]; END; -- RecListtypelistProd RecListtypelistProdProcs: PUBLIC RecListNodeProcs _ NEW[RecListNodeProcsBody _ [RecListtypelistProdMakeFieldList]]; BuildRecListtypelistProdNode: PUBLIC PROC[position: INT, length: INT, TypeList: TypeListNode] RETURNS[RecListNode] = BEGIN data: RecListtypelistProdData _ NEW[RecListtypelistProdDataBody _ [ TypeList]]; RETURN[NEW[RecListNodeBody_[position, length, RecListtypelistProdProcs, data]]]; END; -- PairListoneProd PairListoneProdProcs: PUBLIC PairListNodeProcs _ NEW[PairListNodeProcsBody _ [PairListoneProdAddPairsToFieldList]]; BuildPairListoneProdNode: PUBLIC PROC[position: INT, length: INT, PairItem: PairItemNode] RETURNS[PairListNode] = BEGIN data: PairListoneProdData _ NEW[PairListoneProdDataBody _ [ PairItem]]; RETURN[NEW[PairListNodeBody_[position, length, PairListoneProdProcs, data]]]; END; -- PairListmanyProd PairListmanyProdProcs: PUBLIC PairListNodeProcs _ NEW[PairListNodeProcsBody _ [PairListmanyProdAddPairsToFieldList]]; BuildPairListmanyProdNode: PUBLIC PROC[position: INT, length: INT, PairListhead: PairListNode, PairListtail: PairListNode] RETURNS[PairListNode] = BEGIN data: PairListmanyProdData _ NEW[PairListmanyProdDataBody _ [ PairListhead, PairListtail]]; RETURN[NEW[PairListNodeBody_[position, length, PairListmanyProdProcs, data]]]; END; -- PairItemProd PairItemProdProcs: PUBLIC PairItemNodeProcs _ NEW[PairItemNodeProcsBody _ [PairItemProdAddPairsToFieldList]]; BuildPairItemProdNode: PUBLIC PROC[position: INT, length: INT, IdentList: IdentListNode, Access: AccessNode, TypeExp: TypeExpNode, Default: DefaultNode] RETURNS[PairItemNode] = BEGIN data: PairItemProdData _ NEW[PairItemProdDataBody _ [ IdentList, Access, TypeExp, Default]]; RETURN[NEW[PairItemNodeBody_[position, length, PairItemProdProcs, data]]]; END; -- TypeListoneProd TypeListoneProdProcs: PUBLIC TypeListNodeProcs _ NEW[TypeListNodeProcsBody _ [TypeListoneProdAddToFieldList]]; BuildTypeListoneProdNode: PUBLIC PROC[position: INT, length: INT, TypeItem: TypeItemNode] RETURNS[TypeListNode] = BEGIN data: TypeListoneProdData _ NEW[TypeListoneProdDataBody _ [ TypeItem]]; RETURN[NEW[TypeListNodeBody_[position, length, TypeListoneProdProcs, data]]]; END; -- TypeListmanyProd TypeListmanyProdProcs: PUBLIC TypeListNodeProcs _ NEW[TypeListNodeProcsBody _ [TypeListmanyProdAddToFieldList]]; BuildTypeListmanyProdNode: PUBLIC PROC[position: INT, length: INT, TypeListhead: TypeListNode, TypeListtail: TypeListNode] RETURNS[TypeListNode] = BEGIN data: TypeListmanyProdData _ NEW[TypeListmanyProdDataBody _ [ TypeListhead, TypeListtail]]; RETURN[NEW[TypeListNodeBody_[position, length, TypeListmanyProdProcs, data]]]; END; -- TypeItemProd TypeItemProdProcs: PUBLIC TypeItemNodeProcs _ NEW[TypeItemNodeProcsBody _ [TypeItemProdAddToFieldList]]; BuildTypeItemProdNode: PUBLIC PROC[position: INT, length: INT, TypeExp: TypeExpNode, Default: DefaultNode] RETURNS[TypeItemNode] = BEGIN data: TypeItemProdData _ NEW[TypeItemProdDataBody _ [ TypeExp, Default]]; RETURN[NEW[TypeItemNodeBody_[position, length, TypeItemProdProcs, data]]]; END; END..