<> <> <> <> DIRECTORY SaffronTreeBucketDef, SaffronTreeDeclsDef, SaffronGenericDef, SaffronATDef; SaffronAG1Def: CEDAR DEFINITIONS = BEGIN OPEN SaffronTreeBucketDef, SaffronTreeDeclsDef, SaffronGenericDef, SaffronATDef; <> JunkProdData: TYPE = REF JunkProdDataBody; JunkProdDataBody: TYPE = RECORD[ ]; JunkProdProcs: JunkNodeProcs; BuildJunkProdNode: PROC[position: INT, length: INT] RETURNS[JunkNode]; JunkProdfoo: fooProcType; <> TopmodulepProdData: TYPE = REF TopmodulepProdDataBody; TopmodulepProdDataBody: TYPE = RECORD[ ModuleP: ModulePNode]; TopmodulepProdProcs: TopNodeProcs; BuildTopmodulepProdNode: PROC[position: INT, length: INT, ModuleP: ModulePNode] RETURNS[TopNode]; TopmodulepProdfoo: fooProcType; TopmodulepProdDoTop: DoTopProcType; <> TopscopeProdData: TYPE = REF TopscopeProdDataBody; TopscopeProdDataBody: TYPE = RECORD[ Scope: ScopeNode]; TopscopeProdProcs: TopNodeProcs; BuildTopscopeProdNode: PROC[position: INT, length: INT, Scope: ScopeNode] RETURNS[TopNode]; TopscopeProdfoo: fooProcType; TopscopeProdDoTop: DoTopProcType; <> ExpsumProdData: TYPE = REF ExpsumProdDataBody; ExpsumProdDataBody: TYPE = RECORD[ Expleft: ExpNode, AddOp: AddOpNode, Expright: ExpNode]; ExpsumProdProcs: ExpNodeProcs; BuildExpsumProdNode: PROC[position: INT, length: INT, Expleft: ExpNode, AddOp: AddOpNode, Expright: ExpNode] RETURNS[ExpNode]; ExpsumProdfoo: fooProcType; ExpsumProdMakeValue: MakeValueProcType; <> ExpunarysumProdData: TYPE = REF ExpunarysumProdDataBody; ExpunarysumProdDataBody: TYPE = RECORD[ AddOp: AddOpNode, Exp: ExpNode]; ExpunarysumProdProcs: ExpNodeProcs; BuildExpunarysumProdNode: PROC[position: INT, length: INT, AddOp: AddOpNode, Exp: ExpNode] RETURNS[ExpNode]; ExpunarysumProdfoo: fooProcType; ExpunarysumProdMakeValue: MakeValueProcType; <> ExpproductProdData: TYPE = REF ExpproductProdDataBody; ExpproductProdDataBody: TYPE = RECORD[ Expleft: ExpNode, MultOp: MultOpNode, Expright: ExpNode]; ExpproductProdProcs: ExpNodeProcs; BuildExpproductProdNode: PROC[position: INT, length: INT, Expleft: ExpNode, MultOp: MultOpNode, Expright: ExpNode] RETURNS[ExpNode]; ExpproductProdfoo: fooProcType; ExpproductProdMakeValue: MakeValueProcType; <> ExporProdData: TYPE = REF ExporProdDataBody; ExporProdDataBody: TYPE = RECORD[ Expleft: ExpNode, Expright: ExpNode]; ExporProdProcs: ExpNodeProcs; BuildExporProdNode: PROC[position: INT, length: INT, Expleft: ExpNode, Expright: ExpNode] RETURNS[ExpNode]; ExporProdfoo: fooProcType; ExporProdMakeValue: MakeValueProcType; <> ExpandProdData: TYPE = REF ExpandProdDataBody; ExpandProdDataBody: TYPE = RECORD[ Expleft: ExpNode, Expright: ExpNode]; ExpandProdProcs: ExpNodeProcs; BuildExpandProdNode: PROC[position: INT, length: INT, Expleft: ExpNode, Expright: ExpNode] RETURNS[ExpNode]; ExpandProdfoo: fooProcType; ExpandProdMakeValue: MakeValueProcType; <> ExpnotProdData: TYPE = REF ExpnotProdDataBody; ExpnotProdDataBody: TYPE = RECORD[ Exp: ExpNode]; ExpnotProdProcs: ExpNodeProcs; BuildExpnotProdNode: PROC[position: INT, length: INT, Exp: ExpNode] RETURNS[ExpNode]; ExpnotProdfoo: fooProcType; ExpnotProdMakeValue: MakeValueProcType; <> ExprelationProdData: TYPE = REF ExprelationProdDataBody; ExprelationProdDataBody: TYPE = RECORD[ Exp: ExpNode, Relation: RelationNode]; ExprelationProdProcs: ExpNodeProcs; BuildExprelationProdNode: PROC[position: INT, length: INT, Exp: ExpNode, Relation: RelationNode] RETURNS[ExpNode]; ExprelationProdfoo: fooProcType; ExprelationProdMakeValue: MakeValueProcType; <> ExpifthenelseProdData: TYPE = REF ExpifthenelseProdDataBody; ExpifthenelseProdDataBody: TYPE = RECORD[ Expcond: ExpNode, Expthenpart: ExpNode, Expelsepart: ExpNode]; ExpifthenelseProdProcs: ExpNodeProcs; BuildExpifthenelseProdNode: PROC[position: INT, length: INT, Expcond: ExpNode, Expthenpart: ExpNode, Expelsepart: ExpNode] RETURNS[ExpNode]; ExpifthenelseProdfoo: fooProcType; ExpifthenelseProdMakeValue: MakeValueProcType; <> ExpselectProdData: TYPE = REF ExpselectProdDataBody; ExpselectProdDataBody: TYPE = RECORD[ SelectHead: SelectHeadNode, SelectExpList: SelectExpListNode, Expdefault: ExpNode]; ExpselectProdProcs: ExpNodeProcs; BuildExpselectProdNode: PROC[position: INT, length: INT, SelectHead: SelectHeadNode, SelectExpList: SelectExpListNode, Expdefault: ExpNode] RETURNS[ExpNode]; ExpselectProdfoo: fooProcType; ExpselectProdMakeValue: MakeValueProcType; <> ExpassignProdData: TYPE = REF ExpassignProdDataBody; ExpassignProdDataBody: TYPE = RECORD[ Explhs: ExpNode, Exprhs: ExpNode]; ExpassignProdProcs: ExpNodeProcs; BuildExpassignProdNode: PROC[position: INT, length: INT, Explhs: ExpNode, Exprhs: ExpNode] RETURNS[ExpNode]; ExpassignProdfoo: fooProcType; ExpassignProdMakeValue: MakeValueProcType; <> ExpmultiassignProdData: TYPE = REF ExpmultiassignProdDataBody; ExpmultiassignProdDataBody: TYPE = RECORD[ ExpList: ExpListNode, Exp: ExpNode]; ExpmultiassignProdProcs: ExpNodeProcs; BuildExpmultiassignProdNode: PROC[position: INT, length: INT, ExpList: ExpListNode, Exp: ExpNode] RETURNS[ExpNode]; ExpmultiassignProdfoo: fooProcType; ExpmultiassignProdMakeValue: MakeValueProcType; <> ExpidProdData: TYPE = REF ExpidProdDataBody; ExpidProdDataBody: TYPE = RECORD[ id: idNode]; ExpidProdProcs: ExpNodeProcs; BuildExpidProdNode: PROC[position: INT, length: INT, id: idNode] RETURNS[ExpNode]; ExpidProdfoo: fooProcType; ExpidProdMakeValue: MakeValueProcType; <> ExpnumProdData: TYPE = REF ExpnumProdDataBody; ExpnumProdDataBody: TYPE = RECORD[ Num: NumNode]; ExpnumProdProcs: ExpNodeProcs; BuildExpnumProdNode: PROC[position: INT, length: INT, Num: NumNode] RETURNS[ExpNode]; ExpnumProdfoo: fooProcType; ExpnumProdMakeValue: MakeValueProcType; <> ExpstringProdData: TYPE = REF ExpstringProdDataBody; ExpstringProdDataBody: TYPE = RECORD[ string: stringNode]; ExpstringProdProcs: ExpNodeProcs; BuildExpstringProdNode: PROC[position: INT, length: INT, string: stringNode] RETURNS[ExpNode]; ExpstringProdfoo: fooProcType; ExpstringProdMakeValue: MakeValueProcType; <> ExpflnumProdData: TYPE = REF ExpflnumProdDataBody; ExpflnumProdDataBody: TYPE = RECORD[ flnum: flnumNode]; ExpflnumProdProcs: ExpNodeProcs; BuildExpflnumProdNode: PROC[position: INT, length: INT, flnum: flnumNode] RETURNS[ExpNode]; ExpflnumProdfoo: fooProcType; ExpflnumProdMakeValue: MakeValueProcType; <> ExpcharProdData: TYPE = REF ExpcharProdDataBody; ExpcharProdDataBody: TYPE = RECORD[ char: charNode]; ExpcharProdProcs: ExpNodeProcs; BuildExpcharProdNode: PROC[position: INT, length: INT, char: charNode] RETURNS[ExpNode]; ExpcharProdfoo: fooProcType; ExpcharProdMakeValue: MakeValueProcType; <> ExpatomProdData: TYPE = REF ExpatomProdDataBody; ExpatomProdDataBody: TYPE = RECORD[ atom: atomNode]; ExpatomProdProcs: ExpNodeProcs; BuildExpatomProdNode: PROC[position: INT, length: INT, atom: atomNode] RETURNS[ExpNode]; ExpatomProdfoo: fooProcType; ExpatomProdMakeValue: MakeValueProcType; <> ExpnarrowProdData: TYPE = REF ExpnarrowProdDataBody; ExpnarrowProdDataBody: TYPE = RECORD[ Exp: ExpNode, OptType: OptTypeNode, Catch: CatchNode]; ExpnarrowProdProcs: ExpNodeProcs; BuildExpnarrowProdNode: PROC[position: INT, length: INT, Exp: ExpNode, OptType: OptTypeNode, Catch: CatchNode] RETURNS[ExpNode]; ExpnarrowProdfoo: fooProcType; ExpnarrowProdMakeValue: MakeValueProcType; <> ExploopholeProdData: TYPE = REF ExploopholeProdDataBody; ExploopholeProdDataBody: TYPE = RECORD[ Exp: ExpNode, OptType: OptTypeNode]; ExploopholeProdProcs: ExpNodeProcs; BuildExploopholeProdNode: PROC[position: INT, length: INT, Exp: ExpNode, OptType: OptTypeNode] RETURNS[ExpNode]; ExploopholeProdfoo: fooProcType; ExploopholeProdMakeValue: MakeValueProcType; <> ExpapplyProdData: TYPE = REF ExpapplyProdDataBody; ExpapplyProdDataBody: TYPE = RECORD[ Exprator: ExpNode, Exprand: ExpNode, Catch: CatchNode]; ExpapplyProdProcs: ExpNodeProcs; BuildExpapplyProdNode: PROC[position: INT, length: INT, Exprator: ExpNode, Exprand: ExpNode, Catch: CatchNode] RETURNS[ExpNode]; ExpapplyProdfoo: fooProcType; ExpapplyProdMakeValue: MakeValueProcType; <> ExpqualifierProdData: TYPE = REF ExpqualifierProdDataBody; ExpqualifierProdDataBody: TYPE = RECORD[ Exp: ExpNode, Qualifier: QualifierNode]; ExpqualifierProdProcs: ExpNodeProcs; BuildExpqualifierProdNode: PROC[position: INT, length: INT, Exp: ExpNode, Qualifier: QualifierNode] RETURNS[ExpNode]; ExpqualifierProdfoo: fooProcType; ExpqualifierProdMakeValue: MakeValueProcType; <> ExpexplistProdData: TYPE = REF ExpexplistProdDataBody; ExpexplistProdDataBody: TYPE = RECORD[ ExpList: ExpListNode]; ExpexplistProdProcs: ExpNodeProcs; BuildExpexplistProdNode: PROC[position: INT, length: INT, ExpList: ExpListNode] RETURNS[ExpNode]; ExpexplistProdfoo: fooProcType; ExpexplistProdMakeValue: MakeValueProcType; <> ExpprefixopProdData: TYPE = REF ExpprefixopProdDataBody; ExpprefixopProdDataBody: TYPE = RECORD[ PrefixOp: PrefixOpNode, OrderList: OrderListNode]; ExpprefixopProdProcs: ExpNodeProcs; BuildExpprefixopProdNode: PROC[position: INT, length: INT, PrefixOp: PrefixOpNode, OrderList: OrderListNode] RETURNS[ExpNode]; ExpprefixopProdfoo: fooProcType; ExpprefixopProdMakeValue: MakeValueProcType; <> ExpvalProdData: TYPE = REF ExpvalProdDataBody; ExpvalProdDataBody: TYPE = RECORD[ OrderList: OrderListNode]; ExpvalProdProcs: ExpNodeProcs; BuildExpvalProdNode: PROC[position: INT, length: INT, OrderList: OrderListNode] RETURNS[ExpNode]; ExpvalProdfoo: fooProcType; ExpvalProdMakeValue: MakeValueProcType; <> ExpallProdData: TYPE = REF ExpallProdDataBody; ExpallProdDataBody: TYPE = RECORD[ OrderList: OrderListNode]; ExpallProdProcs: ExpNodeProcs; BuildExpallProdNode: PROC[position: INT, length: INT, OrderList: OrderListNode] RETURNS[ExpNode]; ExpallProdfoo: fooProcType; ExpallProdMakeValue: MakeValueProcType; <> ExpnewProdData: TYPE = REF ExpnewProdDataBody; ExpnewProdDataBody: TYPE = RECORD[ New: NewNode, TypeExp: TypeExpNode, Initialization: InitializationNode, Catch: CatchNode]; ExpnewProdProcs: ExpNodeProcs; BuildExpnewProdNode: PROC[position: INT, length: INT, New: NewNode, TypeExp: TypeExpNode, Initialization: InitializationNode, Catch: CatchNode] RETURNS[ExpNode]; ExpnewProdfoo: fooProcType; ExpnewProdMakeValue: MakeValueProcType; <> ExpconsProdData: TYPE = REF ExpconsProdDataBody; ExpconsProdDataBody: TYPE = RECORD[ Cons: ConsNode, ExpList: ExpListNode, Catch: CatchNode]; ExpconsProdProcs: ExpNodeProcs; BuildExpconsProdNode: PROC[position: INT, length: INT, Cons: ConsNode, ExpList: ExpListNode, Catch: CatchNode] RETURNS[ExpNode]; ExpconsProdfoo: fooProcType; ExpconsProdMakeValue: MakeValueProcType; <> ExplistconsProdData: TYPE = REF ExplistconsProdDataBody; ExplistconsProdDataBody: TYPE = RECORD[ ListCons: ListConsNode, ExpList: ExpListNode]; ExplistconsProdProcs: ExpNodeProcs; BuildExplistconsProdNode: PROC[position: INT, length: INT, ListCons: ListConsNode, ExpList: ExpListNode] RETURNS[ExpNode]; ExplistconsProdfoo: fooProcType; ExplistconsProdMakeValue: MakeValueProcType; <> ExpnilProdData: TYPE = REF ExpnilProdDataBody; ExpnilProdDataBody: TYPE = RECORD[ ]; ExpnilProdProcs: ExpNodeProcs; BuildExpnilProdNode: PROC[position: INT, length: INT] RETURNS[ExpNode]; ExpnilProdfoo: fooProcType; ExpnilProdMakeValue: MakeValueProcType; <> ExptypeopProdData: TYPE = REF ExptypeopProdDataBody; ExptypeopProdDataBody: TYPE = RECORD[ TypeOp: TypeOpNode, TypeExp: TypeExpNode]; ExptypeopProdProcs: ExpNodeProcs; BuildExptypeopProdNode: PROC[position: INT, length: INT, TypeOp: TypeOpNode, TypeExp: TypeExpNode] RETURNS[ExpNode]; ExptypeopProdfoo: fooProcType; ExptypeopProdMakeValue: MakeValueProcType; <> ExpsizeProdData: TYPE = REF ExpsizeProdDataBody; ExpsizeProdDataBody: TYPE = RECORD[ TypeExp: TypeExpNode]; ExpsizeProdProcs: ExpNodeProcs; BuildExpsizeProdNode: PROC[position: INT, length: INT, TypeExp: TypeExpNode] RETURNS[ExpNode]; ExpsizeProdfoo: fooProcType; ExpsizeProdMakeValue: MakeValueProcType; <> Expsize2ProdData: TYPE = REF Expsize2ProdDataBody; Expsize2ProdDataBody: TYPE = RECORD[ TypeExp: TypeExpNode, Exp: ExpNode]; Expsize2ProdProcs: ExpNodeProcs; BuildExpsize2ProdNode: PROC[position: INT, length: INT, TypeExp: TypeExpNode, Exp: ExpNode] RETURNS[ExpNode]; Expsize2Prodfoo: fooProcType; Expsize2ProdMakeValue: MakeValueProcType; <> ExpistypeProdData: TYPE = REF ExpistypeProdDataBody; ExpistypeProdDataBody: TYPE = RECORD[ Exp: ExpNode, TypeExp: TypeExpNode]; ExpistypeProdProcs: ExpNodeProcs; BuildExpistypeProdNode: PROC[position: INT, length: INT, Exp: ExpNode, TypeExp: TypeExpNode] RETURNS[ExpNode]; ExpistypeProdfoo: fooProcType; ExpistypeProdMakeValue: MakeValueProcType; <> ExpaddressProdData: TYPE = REF ExpaddressProdDataBody; ExpaddressProdDataBody: TYPE = RECORD[ Exp: ExpNode]; ExpaddressProdProcs: ExpNodeProcs; BuildExpaddressProdNode: PROC[position: INT, length: INT, Exp: ExpNode] RETURNS[ExpNode]; ExpaddressProdfoo: fooProcType; ExpaddressProdMakeValue: MakeValueProcType; <> ExpdescriptorProdData: TYPE = REF ExpdescriptorProdDataBody; ExpdescriptorProdDataBody: TYPE = RECORD[ DescList: DescListNode]; ExpdescriptorProdProcs: ExpNodeProcs; BuildExpdescriptorProdNode: PROC[position: INT, length: INT, DescList: DescListNode] RETURNS[ExpNode]; ExpdescriptorProdfoo: fooProcType; ExpdescriptorProdMakeValue: MakeValueProcType; <> ExperrorProdData: TYPE = REF ExperrorProdDataBody; ExperrorProdDataBody: TYPE = RECORD[ ]; ExperrorProdProcs: ExpNodeProcs; BuildExperrorProdNode: PROC[position: INT, length: INT] RETURNS[ExpNode]; ExperrorProdfoo: fooProcType; ExperrorProdMakeValue: MakeValueProcType; <> ExptransferProdData: TYPE = REF ExptransferProdDataBody; ExptransferProdDataBody: TYPE = RECORD[ TransferOp: TransferOpNode, Exp: ExpNode]; ExptransferProdProcs: ExpNodeProcs; BuildExptransferProdNode: PROC[position: INT, length: INT, TransferOp: TransferOpNode, Exp: ExpNode] RETURNS[ExpNode]; ExptransferProdfoo: fooProcType; ExptransferProdMakeValue: MakeValueProcType; <> NumdecimalProdData: TYPE = REF NumdecimalProdDataBody; NumdecimalProdDataBody: TYPE = RECORD[ decimalnum: decimalnumNode]; NumdecimalProdProcs: NumNodeProcs; BuildNumdecimalProdNode: PROC[position: INT, length: INT, decimalnum: decimalnumNode] RETURNS[NumNode]; NumdecimalProdfoo: fooProcType; <> NumoctalProdData: TYPE = REF NumoctalProdDataBody; NumoctalProdDataBody: TYPE = RECORD[ octalnum: octalnumNode]; NumoctalProdProcs: NumNodeProcs; BuildNumoctalProdNode: PROC[position: INT, length: INT, octalnum: octalnumNode] RETURNS[NumNode]; NumoctalProdfoo: fooProcType; <> NumhexProdData: TYPE = REF NumhexProdDataBody; NumhexProdDataBody: TYPE = RECORD[ hexnum: hexnumNode]; NumhexProdProcs: NumNodeProcs; BuildNumhexProdNode: PROC[position: INT, length: INT, hexnum: hexnumNode] RETURNS[NumNode]; NumhexProdfoo: fooProcType; <> AddOpplusProdData: TYPE = REF AddOpplusProdDataBody; AddOpplusProdDataBody: TYPE = RECORD[ ]; AddOpplusProdProcs: AddOpNodeProcs; BuildAddOpplusProdNode: PROC[position: INT, length: INT] RETURNS[AddOpNode]; AddOpplusProdfoo: fooProcType; <> AddOpminusProdData: TYPE = REF AddOpminusProdDataBody; AddOpminusProdDataBody: TYPE = RECORD[ ]; AddOpminusProdProcs: AddOpNodeProcs; BuildAddOpminusProdNode: PROC[position: INT, length: INT] RETURNS[AddOpNode]; AddOpminusProdfoo: fooProcType; <> MultOptimesProdData: TYPE = REF MultOptimesProdDataBody; MultOptimesProdDataBody: TYPE = RECORD[ ]; MultOptimesProdProcs: MultOpNodeProcs; BuildMultOptimesProdNode: PROC[position: INT, length: INT] RETURNS[MultOpNode]; MultOptimesProdfoo: fooProcType; <> MultOpdivideProdData: TYPE = REF MultOpdivideProdDataBody; MultOpdivideProdDataBody: TYPE = RECORD[ ]; MultOpdivideProdProcs: MultOpNodeProcs; BuildMultOpdivideProdNode: PROC[position: INT, length: INT] RETURNS[MultOpNode]; MultOpdivideProdfoo: fooProcType; <> MultOpmodProdData: TYPE = REF MultOpmodProdDataBody; MultOpmodProdDataBody: TYPE = RECORD[ ]; MultOpmodProdProcs: MultOpNodeProcs; BuildMultOpmodProdNode: PROC[position: INT, length: INT] RETURNS[MultOpNode]; MultOpmodProdfoo: fooProcType; <> SelectHeadplainProdData: TYPE = REF SelectHeadplainProdDataBody; SelectHeadplainProdDataBody: TYPE = RECORD[ Exp: ExpNode]; SelectHeadplainProdProcs: SelectHeadNodeProcs; BuildSelectHeadplainProdNode: PROC[position: INT, length: INT, Exp: ExpNode] RETURNS[SelectHeadNode]; SelectHeadplainProdfoo: fooProcType; <> SelectHeaddiscriminatingProdData: TYPE = REF SelectHeaddiscriminatingProdDataBody; SelectHeaddiscriminatingProdDataBody: TYPE = RECORD[ BindItem: BindItemNode, OptExp: OptExpNode]; SelectHeaddiscriminatingProdProcs: SelectHeadNodeProcs; BuildSelectHeaddiscriminatingProdNode: PROC[position: INT, length: INT, BindItem: BindItemNode, OptExp: OptExpNode] RETURNS[SelectHeadNode]; SelectHeaddiscriminatingProdfoo: fooProcType; <> SelectExpListemptyProdData: TYPE = REF SelectExpListemptyProdDataBody; SelectExpListemptyProdDataBody: TYPE = RECORD[ ]; SelectExpListemptyProdProcs: SelectExpListNodeProcs; BuildSelectExpListemptyProdNode: PROC[position: INT, length: INT] RETURNS[SelectExpListNode]; SelectExpListemptyProdfoo: fooProcType; <> SelectExpListmoreProdData: TYPE = REF SelectExpListmoreProdDataBody; SelectExpListmoreProdDataBody: TYPE = RECORD[ SelectExpList: SelectExpListNode, SelectExpItem: SelectExpItemNode]; SelectExpListmoreProdProcs: SelectExpListNodeProcs; BuildSelectExpListmoreProdNode: PROC[position: INT, length: INT, SelectExpList: SelectExpListNode, SelectExpItem: SelectExpItemNode] RETURNS[SelectExpListNode]; SelectExpListmoreProdfoo: fooProcType; <> SelectExpItemProdData: TYPE = REF SelectExpItemProdDataBody; SelectExpItemProdDataBody: TYPE = RECORD[ SelectLabel: SelectLabelNode, Exp: ExpNode]; SelectExpItemProdProcs: SelectExpItemNodeProcs; BuildSelectExpItemProdNode: PROC[position: INT, length: INT, SelectLabel: SelectLabelNode, Exp: ExpNode] RETURNS[SelectExpItemNode]; SelectExpItemProdfoo: fooProcType; <> SelectLabeltypeProdData: TYPE = REF SelectLabeltypeProdDataBody; SelectLabeltypeProdDataBody: TYPE = RECORD[ Ident: IdentNode, TypeExp: TypeExpNode]; SelectLabeltypeProdProcs: SelectLabelNodeProcs; BuildSelectLabeltypeProdNode: PROC[position: INT, length: INT, Ident: IdentNode, TypeExp: TypeExpNode] RETURNS[SelectLabelNode]; SelectLabeltypeProdfoo: fooProcType; <> SelectLabeltestProdData: TYPE = REF SelectLabeltestProdDataBody; SelectLabeltestProdDataBody: TYPE = RECORD[ SelectTestList: SelectTestListNode]; SelectLabeltestProdProcs: SelectLabelNodeProcs; BuildSelectLabeltestProdNode: PROC[position: INT, length: INT, SelectTestList: SelectTestListNode] RETURNS[SelectLabelNode]; SelectLabeltestProdfoo: fooProcType; <> SelectTestListoneProdData: TYPE = REF SelectTestListoneProdDataBody; SelectTestListoneProdDataBody: TYPE = RECORD[ Relation: RelationNode]; SelectTestListoneProdProcs: SelectTestListNodeProcs; BuildSelectTestListoneProdNode: PROC[position: INT, length: INT, Relation: RelationNode] RETURNS[SelectTestListNode]; SelectTestListoneProdfoo: fooProcType; <> SelectTestListmoreProdData: TYPE = REF SelectTestListmoreProdDataBody; SelectTestListmoreProdDataBody: TYPE = RECORD[ SelectTestList: SelectTestListNode, Relation: RelationNode]; SelectTestListmoreProdProcs: SelectTestListNodeProcs; BuildSelectTestListmoreProdNode: PROC[position: INT, length: INT, SelectTestList: SelectTestListNode, Relation: RelationNode] RETURNS[SelectTestListNode]; SelectTestListmoreProdfoo: fooProcType; <> RelationnegativeProdData: TYPE = REF RelationnegativeProdDataBody; RelationnegativeProdDataBody: TYPE = RECORD[ RelationTail: RelationTailNode]; RelationnegativeProdProcs: RelationNodeProcs; BuildRelationnegativeProdNode: PROC[position: INT, length: INT, RelationTail: RelationTailNode] RETURNS[RelationNode]; RelationnegativeProdfoo: fooProcType; <> RelationpositiveProdData: TYPE = REF RelationpositiveProdDataBody; RelationpositiveProdDataBody: TYPE = RECORD[ RelationTail: RelationTailNode]; RelationpositiveProdProcs: RelationNodeProcs; BuildRelationpositiveProdNode: PROC[position: INT, length: INT, RelationTail: RelationTailNode] RETURNS[RelationNode]; RelationpositiveProdfoo: fooProcType; <> RelationTailrangeProdData: TYPE = REF RelationTailrangeProdDataBody; RelationTailrangeProdDataBody: TYPE = RECORD[ Range: RangeNode]; RelationTailrangeProdProcs: RelationTailNodeProcs; BuildRelationTailrangeProdNode: PROC[position: INT, length: INT, Range: RangeNode] RETURNS[RelationTailNode]; RelationTailrangeProdfoo: fooProcType; <> RelationTailrelopProdData: TYPE = REF RelationTailrelopProdDataBody; RelationTailrelopProdDataBody: TYPE = RECORD[ Relop: RelopNode, Exp: ExpNode]; RelationTailrelopProdProcs: RelationTailNodeProcs; BuildRelationTailrelopProdNode: PROC[position: INT, length: INT, Relop: RelopNode, Exp: ExpNode] RETURNS[RelationTailNode]; RelationTailrelopProdfoo: fooProcType; END..