DIRECTORY Rope, KipperMain1Def, ThreeC4Support; KipperMain1Impl: CEDAR PROGRAM IMPORTS Rope, KipperMain1Def, ThreeC4Support EXPORTS KipperMain1Def= BEGIN OPEN Rope, KipperMain1Def, ThreeC4Support; KipperMain1LinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] = BEGIN tknLinkArray[tokenID] ← BuildidNode; END; -- JunkProd JunkProdProcs: PUBLIC JunkNodeProcs ← NEW[JunkNodeProcsBody ← [JunkProdfoo]]; BuildJunkProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[JunkNode] = BEGIN RETURN[NEW[JunkNodeBody←[position, length, JunkProdProcs, NIL]]]; END; JunkProdfoo: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: INT] = BEGIN tree: JunkNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 ← 0; END END; --id BuildidNode: PUBLIC PROC[text: Rope.ROPE, firstCharPosition: INT] RETURNS[idNode] = {RETURN[NEW[idNodeBody←[text, firstCharPosition, Length[text]]]]}; -- ModuleBodyProd ModuleBodyProdProcs: PUBLIC ModuleBodyNodeProcs ← NEW[ModuleBodyNodeProcsBody ← [ModuleBodyProdFormContext]]; BuildModuleBodyProdNode: PUBLIC PROC[position: INT, length: INT, id: idNode, DecList: DecListNode] RETURNS[ModuleBodyNode] = BEGIN data: ModuleBodyProdData ← NEW[ModuleBodyProdDataBody←[ id, DecList]]; RETURN[NEW[ModuleBodyNodeBody←[position, length, ModuleBodyProdProcs, data]]]; END; -- DecListoneProd DecListoneProdProcs: PUBLIC DecListNodeProcs ← NEW[DecListNodeProcsBody ← [DecListoneProdEnlargeContext]]; BuildDecListoneProdNode: PUBLIC PROC[position: INT, length: INT, Declaration: DeclarationNode] RETURNS[DecListNode] = BEGIN data: DecListoneProdData ← NEW[DecListoneProdDataBody←[ Declaration]]; RETURN[NEW[DecListNodeBody←[position, length, DecListoneProdProcs, data]]]; END; -- DecListmoreProd DecListmoreProdProcs: PUBLIC DecListNodeProcs ← NEW[DecListNodeProcsBody ← [DecListmoreProdEnlargeContext]]; BuildDecListmoreProdNode: PUBLIC PROC[position: INT, length: INT, DecList: DecListNode, Declaration: DeclarationNode] RETURNS[DecListNode] = BEGIN data: DecListmoreProdData ← NEW[DecListmoreProdDataBody←[ DecList, Declaration]]; RETURN[NEW[DecListNodeBody←[position, length, DecListmoreProdProcs, data]]]; END; -- DeclarationtypeProd DeclarationtypeProdProcs: PUBLIC DeclarationNodeProcs ← NEW[DeclarationNodeProcsBody ← [DeclarationtypeProdEnlargeContext]]; BuildDeclarationtypeProdNode: PUBLIC PROC[position: INT, length: INT, IdListR: IdListRNode, DeclFrom: DeclFromNode, TypeExp: TypeExpNode] RETURNS[DeclarationNode] = BEGIN data: DeclarationtypeProdData ← NEW[DeclarationtypeProdDataBody←[ IdListR, DeclFrom, TypeExp]]; RETURN[NEW[DeclarationNodeBody←[position, length, DeclarationtypeProdProcs, data]]]; END; -- DeclFrombuiltinProd DeclFrombuiltinProdProcs: PUBLIC DeclFromNodeProcs ← NEW[DeclFromNodeProcsBody ← [DeclFrombuiltinProdFormWhenceFromDecl]]; BuildDeclFrombuiltinProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[DeclFromNode] = BEGIN RETURN[NEW[DeclFromNodeBody←[position, length, DeclFrombuiltinProdProcs, NIL]]]; END; -- DeclFromfromcedardefProd DeclFromfromcedardefProdProcs: PUBLIC DeclFromNodeProcs ← NEW[DeclFromNodeProcsBody ← [DeclFromfromcedardefProdFormWhenceFromDecl]]; BuildDeclFromfromcedardefProdNode: PUBLIC PROC[position: INT, length: INT, id: idNode] RETURNS[DeclFromNode] = BEGIN data: DeclFromfromcedardefProdData ← NEW[DeclFromfromcedardefProdDataBody←[ id]]; RETURN[NEW[DeclFromNodeBody←[position, length, DeclFromfromcedardefProdProcs, data]]]; END; -- DeclFromnominalProd DeclFromnominalProdProcs: PUBLIC DeclFromNodeProcs ← NEW[DeclFromNodeProcsBody ← [DeclFromnominalProdFormWhenceFromDecl]]; BuildDeclFromnominalProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[DeclFromNode] = BEGIN RETURN[NEW[DeclFromNodeBody←[position, length, DeclFromnominalProdProcs, NIL]]]; END; -- TypeExptypeidProd TypeExptypeidProdProcs: PUBLIC TypeExpNodeProcs ← NEW[TypeExpNodeProcsBody ← [TypeExptypeidProdFormType]]; 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; -- TypeExpelementsProd TypeExpelementsProdProcs: PUBLIC TypeExpNodeProcs ← NEW[TypeExpNodeProcsBody ← [TypeExpelementsProdFormType]]; BuildTypeExpelementsProdNode: PUBLIC PROC[position: INT, length: INT, ElementList: ElementListNode] RETURNS[TypeExpNode] = BEGIN data: TypeExpelementsProdData ← NEW[TypeExpelementsProdDataBody←[ ElementList]]; RETURN[NEW[TypeExpNodeBody←[position, length, TypeExpelementsProdProcs, data]]]; END; -- TypeExprecordProd TypeExprecordProdProcs: PUBLIC TypeExpNodeProcs ← NEW[TypeExpNodeProcsBody ← [TypeExprecordProdFormType]]; BuildTypeExprecordProdNode: PUBLIC PROC[position: INT, length: INT, FieldList: FieldListNode] RETURNS[TypeExpNode] = BEGIN data: TypeExprecordProdData ← NEW[TypeExprecordProdDataBody←[ FieldList]]; RETURN[NEW[TypeExpNodeBody←[position, length, TypeExprecordProdProcs, data]]]; END; -- TypeExprefProd TypeExprefProdProcs: PUBLIC TypeExpNodeProcs ← NEW[TypeExpNodeProcsBody ← [TypeExprefProdFormType]]; BuildTypeExprefProdNode: PUBLIC PROC[position: INT, length: INT, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExprefProdData ← NEW[TypeExprefProdDataBody←[ TypeExp]]; RETURN[NEW[TypeExpNodeBody←[position, length, TypeExprefProdProcs, data]]]; END; -- TypeExprefAnyProd TypeExprefAnyProdProcs: PUBLIC TypeExpNodeProcs ← NEW[TypeExpNodeProcsBody ← [TypeExprefAnyProdFormType]]; BuildTypeExprefAnyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[TypeExpNode] = BEGIN RETURN[NEW[TypeExpNodeBody←[position, length, TypeExprefAnyProdProcs, NIL]]]; END; -- TypeExplistProd TypeExplistProdProcs: PUBLIC TypeExpNodeProcs ← NEW[TypeExpNodeProcsBody ← [TypeExplistProdFormType]]; BuildTypeExplistProdNode: PUBLIC PROC[position: INT, length: INT, TypeExp: TypeExpNode] RETURNS[TypeExpNode] = BEGIN data: TypeExplistProdData ← NEW[TypeExplistProdDataBody←[ TypeExp]]; RETURN[NEW[TypeExpNodeBody←[position, length, TypeExplistProdProcs, data]]]; END; -- TypeIdmodProd TypeIdmodProdProcs: PUBLIC TypeIdNodeProcs ← NEW[TypeIdNodeProcsBody ← [TypeIdmodProdFormTypeIdDesc]]; BuildTypeIdmodProdNode: PUBLIC PROC[position: INT, length: INT, id: idNode, TypeId: TypeIdNode] RETURNS[TypeIdNode] = BEGIN data: TypeIdmodProdData ← NEW[TypeIdmodProdDataBody←[ id, TypeId]]; RETURN[NEW[TypeIdNodeBody←[position, length, TypeIdmodProdProcs, data]]]; END; -- TypeIdoneProd TypeIdoneProdProcs: PUBLIC TypeIdNodeProcs ← NEW[TypeIdNodeProcsBody ← [TypeIdoneProdFormTypeIdDesc]]; BuildTypeIdoneProdNode: PUBLIC PROC[position: INT, length: INT, IdListL: IdListLNode] RETURNS[TypeIdNode] = BEGIN data: TypeIdoneProdData ← NEW[TypeIdoneProdDataBody←[ IdListL]]; RETURN[NEW[TypeIdNodeBody←[position, length, TypeIdoneProdProcs, data]]]; END; -- ElementListemptyProd ElementListemptyProdProcs: PUBLIC ElementListNodeProcs ← NEW[ElementListNodeProcsBody ← [ElementListemptyProdFormElementSeq]]; BuildElementListemptyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[ElementListNode] = BEGIN RETURN[NEW[ElementListNodeBody←[position, length, ElementListemptyProdProcs, NIL]]]; END; -- ElementListmoreProd ElementListmoreProdProcs: PUBLIC ElementListNodeProcs ← NEW[ElementListNodeProcsBody ← [ElementListmoreProdFormElementSeq]]; 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 ← [ElementidProdFormName]]; 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; -- FieldListemptyProd FieldListemptyProdProcs: PUBLIC FieldListNodeProcs ← NEW[FieldListNodeProcsBody ← [FieldListemptyProdFormFieldSeq]]; BuildFieldListemptyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[FieldListNode] = BEGIN RETURN[NEW[FieldListNodeBody←[position, length, FieldListemptyProdProcs, NIL]]]; END; -- FieldListnullProd FieldListnullProdProcs: PUBLIC FieldListNodeProcs ← NEW[FieldListNodeProcsBody ← [FieldListnullProdFormFieldSeq]]; BuildFieldListnullProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[FieldListNode] = BEGIN RETURN[NEW[FieldListNodeBody←[position, length, FieldListnullProdProcs, NIL]]]; END; -- FieldListpairsProd FieldListpairsProdProcs: PUBLIC FieldListNodeProcs ← NEW[FieldListNodeProcsBody ← [FieldListpairsProdFormFieldSeq]]; BuildFieldListpairsProdNode: PUBLIC PROC[position: INT, length: INT, PairList: PairListNode] RETURNS[FieldListNode] = BEGIN data: FieldListpairsProdData ← NEW[FieldListpairsProdDataBody←[ PairList]]; RETURN[NEW[FieldListNodeBody←[position, length, FieldListpairsProdProcs, data]]]; END; -- FieldListvpairsProd FieldListvpairsProdProcs: PUBLIC FieldListNodeProcs ← NEW[FieldListNodeProcsBody ← [FieldListvpairsProdFormFieldSeq]]; BuildFieldListvpairsProdNode: PUBLIC PROC[position: INT, length: INT, PairList: PairListNode, VPair: VPairNode] RETURNS[FieldListNode] = BEGIN data: FieldListvpairsProdData ← NEW[FieldListvpairsProdDataBody←[ PairList, VPair]]; RETURN[NEW[FieldListNodeBody←[position, length, FieldListvpairsProdProcs, data]]]; END; -- FieldListtypesProd FieldListtypesProdProcs: PUBLIC FieldListNodeProcs ← NEW[FieldListNodeProcsBody ← [FieldListtypesProdFormFieldSeq]]; BuildFieldListtypesProdNode: PUBLIC PROC[position: INT, length: INT, TypeList: TypeListNode] RETURNS[FieldListNode] = BEGIN data: FieldListtypesProdData ← NEW[FieldListtypesProdDataBody←[ TypeList]]; RETURN[NEW[FieldListNodeBody←[position, length, FieldListtypesProdProcs, data]]]; END; -- FieldListvtypesProd FieldListvtypesProdProcs: PUBLIC FieldListNodeProcs ← NEW[FieldListNodeProcsBody ← [FieldListvtypesProdFormFieldSeq]]; BuildFieldListvtypesProdNode: PUBLIC PROC[position: INT, length: INT, TypeList: TypeListNode, VPart: VPartNode] RETURNS[FieldListNode] = BEGIN data: FieldListvtypesProdData ← NEW[FieldListvtypesProdDataBody←[ TypeList, VPart]]; RETURN[NEW[FieldListNodeBody←[position, length, FieldListvtypesProdProcs, data]]]; END; -- PairListemptyProd PairListemptyProdProcs: PUBLIC PairListNodeProcs ← NEW[PairListNodeProcsBody ← [PairListemptyProdFormFieldSeq]]; BuildPairListemptyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[PairListNode] = BEGIN RETURN[NEW[PairListNodeBody←[position, length, PairListemptyProdProcs, NIL]]]; END; -- PairListoneProd PairListoneProdProcs: PUBLIC PairListNodeProcs ← NEW[PairListNodeProcsBody ← [PairListoneProdFormFieldSeq]]; 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; -- PairListmoreProd PairListmoreProdProcs: PUBLIC PairListNodeProcs ← NEW[PairListNodeProcsBody ← [PairListmoreProdFormFieldSeq]]; BuildPairListmoreProdNode: PUBLIC PROC[position: INT, length: INT, PairList: PairListNode, PairItem: PairItemNode] RETURNS[PairListNode] = BEGIN data: PairListmoreProdData ← NEW[PairListmoreProdDataBody←[ PairList, PairItem]]; RETURN[NEW[PairListNodeBody←[position, length, PairListmoreProdProcs, data]]]; END; -- PairItemProd PairItemProdProcs: PUBLIC PairItemNodeProcs ← NEW[PairItemNodeProcsBody ← [PairItemProdFormFieldSeq]]; BuildPairItemProdNode: PUBLIC PROC[position: INT, length: INT, IdListR: IdListRNode, TypeExp: TypeExpNode] RETURNS[PairItemNode] = BEGIN data: PairItemProdData ← NEW[PairItemProdDataBody←[ IdListR, TypeExp]]; RETURN[NEW[PairItemNodeBody←[position, length, PairItemProdProcs, data]]]; END; -- VPairProd VPairProdProcs: PUBLIC VPairNodeProcs ← NEW[VPairNodeProcsBody ← [VPairProdFormFieldSeq]]; BuildVPairProdNode: PUBLIC PROC[position: INT, length: INT, IdListR: IdListRNode, VPart: VPartNode] RETURNS[VPairNode] = BEGIN data: VPairProdData ← NEW[VPairProdDataBody←[ IdListR, VPart]]; RETURN[NEW[VPairNodeBody←[position, length, VPairProdProcs, data]]]; END; -- TypeListemptyProd TypeListemptyProdProcs: PUBLIC TypeListNodeProcs ← NEW[TypeListNodeProcsBody ← [TypeListemptyProdFormFieldSeq]]; BuildTypeListemptyProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[TypeListNode] = BEGIN RETURN[NEW[TypeListNodeBody←[position, length, TypeListemptyProdProcs, NIL]]]; END; -- TypeListoneProd TypeListoneProdProcs: PUBLIC TypeListNodeProcs ← NEW[TypeListNodeProcsBody ← [TypeListoneProdFormFieldSeq]]; BuildTypeListoneProdNode: PUBLIC PROC[position: INT, length: INT, TypeExp: TypeExpNode] RETURNS[TypeListNode] = BEGIN data: TypeListoneProdData ← NEW[TypeListoneProdDataBody←[ TypeExp]]; RETURN[NEW[TypeListNodeBody←[position, length, TypeListoneProdProcs, data]]]; END; -- TypeListmoreProd TypeListmoreProdProcs: PUBLIC TypeListNodeProcs ← NEW[TypeListNodeProcsBody ← [TypeListmoreProdFormFieldSeq]]; BuildTypeListmoreProdNode: PUBLIC PROC[position: INT, length: INT, TypeExp: TypeExpNode, TypeList: TypeListNode] RETURNS[TypeListNode] = BEGIN data: TypeListmoreProdData ← NEW[TypeListmoreProdDataBody←[ TypeExp, TypeList]]; RETURN[NEW[TypeListNodeBody←[position, length, TypeListmoreProdProcs, data]]]; END; -- VPartseqProd VPartseqProdProcs: PUBLIC VPartNodeProcs ← NEW[VPartNodeProcsBody ← [VPartseqProdFormType]]; BuildVPartseqProdNode: PUBLIC PROC[position: INT, length: INT, VCaseHead: VCaseHeadNode, TypeExp: TypeExpNode] RETURNS[VPartNode] = BEGIN data: VPartseqProdData ← NEW[VPartseqProdDataBody←[ VCaseHead, TypeExp]]; RETURN[NEW[VPartNodeBody←[position, length, VPartseqProdProcs, data]]]; END; -- VCaseHeadidentProd VCaseHeadidentProdProcs: PUBLIC VCaseHeadNodeProcs ← NEW[VCaseHeadNodeProcsBody ← [VCaseHeadidentProdFormVCaseHead]]; BuildVCaseHeadidentProdNode: PUBLIC PROC[position: INT, length: INT, Ident: IdentNode, Tagtype: TagtypeNode] RETURNS[VCaseHeadNode] = BEGIN data: VCaseHeadidentProdData ← NEW[VCaseHeadidentProdDataBody←[ Ident, Tagtype]]; RETURN[NEW[VCaseHeadNodeBody←[position, length, VCaseHeadidentProdProcs, data]]]; END; -- TagtypeexpProd TagtypeexpProdProcs: PUBLIC TagtypeNodeProcs ← NEW[TagtypeNodeProcsBody ← [TagtypeexpProdFormType]]; BuildTagtypeexpProdNode: PUBLIC PROC[position: INT, length: INT, TypeExp: TypeExpNode] RETURNS[TagtypeNode] = BEGIN data: TagtypeexpProdData ← NEW[TagtypeexpProdDataBody←[ TypeExp]]; RETURN[NEW[TagtypeNodeBody←[position, length, TagtypeexpProdProcs, data]]]; END; -- IdListRoneProd IdListRoneProdProcs: PUBLIC IdListRNodeProcs ← NEW[IdListRNodeProcsBody ← [IdListRoneProdFormNameSeq]]; BuildIdListRoneProdNode: PUBLIC PROC[position: INT, length: INT, id: idNode] RETURNS[IdListRNode] = BEGIN data: IdListRoneProdData ← NEW[IdListRoneProdDataBody←[ id]]; RETURN[NEW[IdListRNodeBody←[position, length, IdListRoneProdProcs, data]]]; END; -- IdListRmoreProd IdListRmoreProdProcs: PUBLIC IdListRNodeProcs ← NEW[IdListRNodeProcsBody ← [IdListRmoreProdFormNameSeq]]; BuildIdListRmoreProdNode: PUBLIC PROC[position: INT, length: INT, id: idNode, IdListR: IdListRNode] RETURNS[IdListRNode] = BEGIN data: IdListRmoreProdData ← NEW[IdListRmoreProdDataBody←[ id, IdListR]]; RETURN[NEW[IdListRNodeBody←[position, length, IdListRmoreProdProcs, data]]]; END; -- IdListLoneProd IdListLoneProdProcs: PUBLIC IdListLNodeProcs ← NEW[IdListLNodeProcsBody ← [IdListLoneProdFormNameSeq]]; BuildIdListLoneProdNode: PUBLIC PROC[position: INT, length: INT, id: idNode] RETURNS[IdListLNode] = BEGIN data: IdListLoneProdData ← NEW[IdListLoneProdDataBody←[ id]]; RETURN[NEW[IdListLNodeBody←[position, length, IdListLoneProdProcs, data]]]; END; -- IdListLmoreProd IdListLmoreProdProcs: PUBLIC IdListLNodeProcs ← NEW[IdListLNodeProcsBody ← [IdListLmoreProdFormNameSeq]]; BuildIdListLmoreProdNode: PUBLIC PROC[position: INT, length: INT, IdListL: IdListLNode, id: idNode] RETURNS[IdListLNode] = BEGIN data: IdListLmoreProdData ← NEW[IdListLmoreProdDataBody←[ IdListL, id]]; RETURN[NEW[IdListLNodeBody←[position, length, IdListLmoreProdProcs, data]]]; END; -- IdentProd IdentProdProcs: PUBLIC IdentNodeProcs ← NEW[IdentNodeProcsBody ← [IdentProdFormId]]; BuildIdentProdNode: PUBLIC PROC[position: INT, length: INT, id: idNode] RETURNS[IdentNode] = BEGIN data: IdentProdData ← NEW[IdentProdDataBody←[ id]]; RETURN[NEW[IdentNodeBody←[position, length, IdentProdProcs, data]]]; END; ModuleBodyProdFormContext: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: TypeContextNode] = BEGIN tree: ModuleBodyNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModuleBodyProdData ← NARROW[tree.data]; BEGIN context3: TypeContextNode; context2: TypeContextNode; context1: TypeContextNode; context0: TypeContextNode; implModName: NameNode; defModName: NameNode; defModName ← BuildName[treeData.id]; implModName ← BuildImplModName[treeData.id]; context0 ← BuildEmptyTypeContext[defModName, implModName]; context1 ← NoteDefFileName[context0, defModName]; context2 ← NoteImplFileName[context1, implModName]; context3 ← treeData.DecList.procs.EnlargeContext[treeData.DecList, defModName, implModName, context2]; temp0 ← CloseTypeContext[context3]; END; END END; DecListoneProdEnlargeContext: PUBLIC PROC[ref: REF ANY, defModuleName: NameNode, implModuleName: NameNode, context: TypeContextNode] RETURNS[temp0: TypeContextNode] = BEGIN tree: DecListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DecListoneProdData ← NARROW[tree.data]; temp0 ← treeData.Declaration.procs.EnlargeContext[treeData.Declaration, defModuleName, implModuleName, context]; END END; DecListmoreProdEnlargeContext: PUBLIC PROC[ref: REF ANY, defModuleName: NameNode, implModuleName: NameNode, context: TypeContextNode] RETURNS[temp0: TypeContextNode] = BEGIN tree: DecListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DecListmoreProdData ← NARROW[tree.data]; temp0 ← treeData.Declaration.procs.EnlargeContext[treeData.Declaration, defModuleName, implModuleName, treeData.DecList.procs.EnlargeContext[treeData.DecList, defModuleName, implModuleName, context]]; END END; DeclarationtypeProdEnlargeContext: PUBLIC PROC[ref: REF ANY, defModuleName: NameNode, implModuleName: NameNode, context: TypeContextNode] RETURNS[temp0: TypeContextNode] = BEGIN tree: DeclarationNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DeclarationtypeProdData ← NARROW[tree.data]; BEGIN typeDefFile: NameNode; typeNames: NameSeqNode; type: TypeNode; type ← treeData.TypeExp.procs.FormType[treeData.TypeExp]; typeNames ← treeData.IdListR.procs.FormNameSeq[treeData.IdListR]; typeDefFile ← treeData.DeclFrom.procs.FormWhenceFromDecl[treeData.DeclFrom, defModuleName]; temp0 ← RecordTypeDecl[context, typeDefFile, defModuleName, implModuleName, typeNames, type]; END; END END; DeclFrombuiltinProdFormWhenceFromDecl: PUBLIC PROC[ref: REF ANY, moduleName: NameNode] RETURNS[temp0: NameNode] = BEGIN tree: DeclFromNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 ← BuildNullName[]; END END; DeclFromfromcedardefProdFormWhenceFromDecl: PUBLIC PROC[ref: REF ANY, moduleName: NameNode] RETURNS[temp0: NameNode] = BEGIN tree: DeclFromNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DeclFromfromcedardefProdData ← NARROW[tree.data]; temp0 ← BuildName[treeData.id]; END END; DeclFromnominalProdFormWhenceFromDecl: PUBLIC PROC[ref: REF ANY, moduleName: NameNode] RETURNS[temp0: NameNode] = BEGIN tree: DeclFromNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 ← FakeCopyName[moduleName]; END END; TypeExptypeidProdFormType: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: TypeNode] = BEGIN tree: TypeExpNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExptypeidProdData ← NARROW[tree.data]; temp1: NameSeqNode; temp2: NameSeqNode; [temp1, temp2] ← treeData.TypeId.procs.FormTypeIdDesc[treeData.TypeId]; temp0 ← BuildNamedType[temp1, temp2]; END END; TypeExpelementsProdFormType: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: TypeNode] = BEGIN tree: TypeExpNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpelementsProdData ← NARROW[tree.data]; temp0 ← BuildEnumeratedType[treeData.ElementList.procs.FormElementSeq[treeData.ElementList]]; END END; TypeExprecordProdFormType: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: TypeNode] = BEGIN tree: TypeExpNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprecordProdData ← NARROW[tree.data]; temp0 ← BuildRecordType[treeData.FieldList.procs.FormFieldSeq[treeData.FieldList]]; END END; TypeExprefProdFormType: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: TypeNode] = BEGIN tree: TypeExpNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprefProdData ← NARROW[tree.data]; temp0 ← BuildRefType[treeData.TypeExp.procs.FormType[treeData.TypeExp]]; END END; TypeExprefAnyProdFormType: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: TypeNode] = BEGIN tree: TypeExpNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 ← BuildRefAnyType[]; END END; TypeExplistProdFormType: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: TypeNode] = BEGIN tree: TypeExpNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExplistProdData ← NARROW[tree.data]; temp0 ← BuildListType[treeData.TypeExp.procs.FormType[treeData.TypeExp]]; END END; TypeIdmodProdFormTypeIdDesc: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: NameSeqNode, temp1: NameSeqNode] = BEGIN tree: TypeIdNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdmodProdData ← NARROW[tree.data]; BEGIN seq1: NameSeqNode; seq2: NameSeqNode; [seq1, seq2] ← treeData.TypeId.procs.FormTypeIdDesc[treeData.TypeId]; temp1 ← seq2; temp0 ← PrefixToNameSeq[BuildName[treeData.id], seq1]; END; END END; TypeIdoneProdFormTypeIdDesc: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: NameSeqNode, temp1: NameSeqNode] = BEGIN tree: TypeIdNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdoneProdData ← NARROW[tree.data]; temp1 ← treeData.IdListL.procs.FormNameSeq[treeData.IdListL]; temp0 ← BuildEmptyNameSeq[]; END END; ElementListemptyProdFormElementSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ElementSeqNode] = BEGIN tree: ElementListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 ← BuildEmptyElementSeq[]; END END; ElementListmoreProdFormElementSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ElementSeqNode] = BEGIN tree: ElementListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ElementListmoreProdData ← NARROW[tree.data]; temp0 ← AppendNameToElementSeq[treeData.ElementList.procs.FormElementSeq[treeData.ElementList], treeData.Element.procs.FormName[treeData.Element]]; END END; ElementidProdFormName: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: NameNode] = BEGIN tree: ElementNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ElementidProdData ← NARROW[tree.data]; temp0 ← BuildName[treeData.id]; END END; FieldListemptyProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: FieldListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 ← BuildEmptyFieldSeq[]; END END; FieldListnullProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: FieldListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 ← BuildEmptyFieldSeq[]; END END; FieldListpairsProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: FieldListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: FieldListpairsProdData ← NARROW[tree.data]; temp0 ← treeData.PairList.procs.FormFieldSeq[treeData.PairList]; END END; FieldListvpairsProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: FieldListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: FieldListvpairsProdData ← NARROW[tree.data]; temp0 ← ConcatFieldSeq[treeData.PairList.procs.FormFieldSeq[treeData.PairList], treeData.VPair.procs.FormFieldSeq[treeData.VPair]]; END END; FieldListtypesProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: FieldListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: FieldListtypesProdData ← NARROW[tree.data]; temp0 ← treeData.TypeList.procs.FormFieldSeq[treeData.TypeList]; END END; FieldListvtypesProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: FieldListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: FieldListvtypesProdData ← NARROW[tree.data]; BEGIN vFieldSeq: FieldSeqNode; vFieldSeq ← PrefixTypeToFieldSeq[treeData.VPart.procs.FormType[treeData.VPart], BuildEmptyFieldSeq[]]; temp0 ← ConcatFieldSeq[treeData.TypeList.procs.FormFieldSeq[treeData.TypeList], vFieldSeq]; END; END END; PairListemptyProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: PairListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 ← BuildEmptyFieldSeq[]; END END; PairListoneProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: PairListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: PairListoneProdData ← NARROW[tree.data]; temp0 ← treeData.PairItem.procs.FormFieldSeq[treeData.PairItem]; END END; PairListmoreProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: PairListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: PairListmoreProdData ← NARROW[tree.data]; temp0 ← ConcatFieldSeq[treeData.PairList.procs.FormFieldSeq[treeData.PairList], treeData.PairItem.procs.FormFieldSeq[treeData.PairItem]]; END END; PairItemProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: PairItemNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: PairItemProdData ← NARROW[tree.data]; temp0 ← BuildOnePairFieldSeq[treeData.IdListR.procs.FormNameSeq[treeData.IdListR], treeData.TypeExp.procs.FormType[treeData.TypeExp]]; END END; VPairProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: VPairNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VPairProdData ← NARROW[tree.data]; temp0 ← BuildOnePairFieldSeq[treeData.IdListR.procs.FormNameSeq[treeData.IdListR], treeData.VPart.procs.FormType[treeData.VPart]]; END END; TypeListemptyProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: TypeListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 ← BuildEmptyFieldSeq[]; END END; TypeListoneProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: TypeListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeListoneProdData ← NARROW[tree.data]; temp0 ← PrefixTypeToFieldSeq[treeData.TypeExp.procs.FormType[treeData.TypeExp], BuildEmptyFieldSeq[]]; END END; TypeListmoreProdFormFieldSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: FieldSeqNode] = BEGIN tree: TypeListNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeListmoreProdData ← NARROW[tree.data]; temp0 ← PrefixTypeToFieldSeq[treeData.TypeExp.procs.FormType[treeData.TypeExp], treeData.TypeList.procs.FormFieldSeq[treeData.TypeList]]; END END; VPartseqProdFormType: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: TypeNode] = BEGIN tree: VPartNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VPartseqProdData ← NARROW[tree.data]; BEGIN sizeName: NameNode; sizeId: idNode; sizeType: TypeNode; fieldType: TypeNode; fieldType ← treeData.TypeExp.procs.FormType[treeData.TypeExp]; [sizeId, sizeType] ← treeData.VCaseHead.procs.FormVCaseHead[treeData.VCaseHead]; sizeName ← BuildName[sizeId]; temp0 ← BuildSeqType[sizeName, sizeType, fieldType]; END; END END; VCaseHeadidentProdFormVCaseHead: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: idNode, temp1: TypeNode] = BEGIN tree: VCaseHeadNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VCaseHeadidentProdData ← NARROW[tree.data]; temp1 ← treeData.Tagtype.procs.FormType[treeData.Tagtype]; temp0 ← treeData.Ident.procs.FormId[treeData.Ident]; END END; TagtypeexpProdFormType: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: TypeNode] = BEGIN tree: TagtypeNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagtypeexpProdData ← NARROW[tree.data]; temp0 ← treeData.TypeExp.procs.FormType[treeData.TypeExp]; END END; IdListRoneProdFormNameSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: NameSeqNode] = BEGIN tree: IdListRNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListRoneProdData ← NARROW[tree.data]; temp0 ← AppendToNameSeq[BuildEmptyNameSeq[], BuildName[treeData.id]]; END END; IdListRmoreProdFormNameSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: NameSeqNode] = BEGIN tree: IdListRNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListRmoreProdData ← NARROW[tree.data]; temp0 ← PrefixToNameSeq[BuildName[treeData.id], treeData.IdListR.procs.FormNameSeq[treeData.IdListR]]; END END; IdListLoneProdFormNameSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: NameSeqNode] = BEGIN tree: IdListLNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListLoneProdData ← NARROW[tree.data]; temp0 ← AppendToNameSeq[BuildEmptyNameSeq[], BuildName[treeData.id]]; END END; IdListLmoreProdFormNameSeq: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: NameSeqNode] = BEGIN tree: IdListLNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListLmoreProdData ← NARROW[tree.data]; temp0 ← AppendToNameSeq[treeData.IdListL.procs.FormNameSeq[treeData.IdListL], BuildName[treeData.id]]; END END; IdentProdFormId: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: idNode] = BEGIN tree: IdentNode← NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentProdData ← NARROW[tree.data]; temp0 ← treeData.id; END END; END..