Include [SaffronAG, SaffronTreeDecls, SaffronBaseDecls]; SaffronMakeType: Module = Begin TypeExp for TypeExp.record: AbstractProduction [ MachineDependent, Monitored, RecList ] let MakeType[tree, paintRecords, localContext] _ <localContext4, newTgn> where <localContext4, newTgn> _ CreateRecordTGN [ localContext3, paint, frozenFieldList] where <localContext3, frozenFieldList> _ FreezeFieldList [localContext2, fieldList] where <localContext2, fieldList> _ MakeFieldList [RecList, paintRecords, localContext1] where <localContext1, paint> _ if paintRecords then GetUniquePaint [localContext] else <localContext, GetUnpaintedPaint [localContext]> ; for TypeExp.enum: AbstractProduction [ MachineDependent, ElementList ] let MakeType[tree, paintRecords, localContext] _ MakeElementList [ElementList, localContext] ; for TypeExp.ref: AbstractProduction [ ReadOnly, TypeExp ] let MakeType[tree, paintRecords, localContext] _ <localContext2, newTgn> where <localContext2, newTgn> _ CreateRefTGN [localContext1, refereeTgn, refereeTgn] where <localContext1, refereeTgn> _ MakeType [TypeExp, paintRecords, localContext] ; End. SaffronMakeFieldList: Module = Begin RecList for RecList.empty: AbstractProduction [ ] let MakeFieldList [tree, paintRecords, localContext] _ < localContext, CreateEmptyFieldList []> ; for RecList.pairlist: AbstractProduction [ PairList ] let MakeFieldList [tree, paintRecords,localContext] _ <localContext1, fieldList> where <localContext1, fieldList> _ AddPairsToFieldList [PairList, newFieldList, paintRecords, localContext] where newFieldList _ CreateEmptyFieldList [] ; for RecList.typelist: AbstractProduction [ TypeList ] let MakeFieldList [tree, paintRecords, localContext] _ <localContext1, fieldList> where <localContext1, fieldList> _ AddToFieldList [TypeList, newFieldList, paintRecords, localContext] where newFieldList _ CreateEmptyFieldList [] ; End. SaffronAddToFieldList: Module = Begin TypeList for TypeList.many: AbstractProduction [ TypeList.head, TypeList.tail ] let AddToFieldList [tree, fieldList, paintRecords, localContext] _ AddToFieldList [ TypeList.tail, fieldList1, paintRecords, localContext1] where <localContext1, fieldList1> _ AddToFieldList [ TypeList.head, fieldList, paintRecords, localContext] ; for TypeList.one: AbstractProduction [ TypeItem ] let AddToFieldList [tree, fieldList, paintRecords, localContext] _ AddToFieldList [ TypeItem, fieldList , paintRecords, localContext] ; TypeItem for TypeItem: AbstractProduction [ TypeExp, Default ] let AddToFieldList [tree, fieldList, paintRecords, localContext] _ <localContext1, fieldList1> where fieldList1 _ AppendFieldToFieldList [ fieldList, field] where field _ CreateUnnamedField [tgn] where <localContext1, tgn> _ MakeType [TypeExp, paintRecords, localContext] ; End. SaffronAddPairsToFieldList: Module = Begin PairList for PairList.many: AbstractProduction [ PairList.head, PairList.tail ] let AddPairsToFieldList [tree, fieldList, paintRecords, localContext] _ AddPairsToFieldList [ PairList.tail, fieldList1, paintRecords, localContext1] where <localContext1, fieldList1> _ AddPairsToFieldList [PairList.head, fieldList, paintRecords, localContext] ; for PairList.one: AbstractProduction [ PairItem ] let AddPairsToFieldList [tree, fieldList, paintRecords, localContext] _ AddPairsToFieldList [tree, fieldList, paintRecords, localContext] ; PairItem for PairItem: AbstractProduction [ IdentList, Access, TypeExp, Default ] let AddPairsToFieldList [tree, fieldList, paintRecords, localContext] _ < localContext1, AddNamesToFieldList [IdentList, tgn, fieldList] > where <localContext1, tgn> _ MakeType [TypeExp, paintRecords, localContext] ; End. SaffronAddNamesToFieldList: Module = Begin IdentList for IdentList.many: AbstractProduction [ IdentList.head, IdentList.tail ] let AddNamesToFieldList [tree, tgn, fieldList] _ AddNamesToFieldList [IdentList.tail, tgn, fieldList1] where fieldList1 _ AddNamesToFieldList [IdentList.head, tgn, fieldList] ; for IdentList.one: AbstractProduction [ Ident ] let AddNamesToFieldList [tree, tgn, fieldList] _ AddNamesToFieldList [Ident, tgn, fieldList] ; Ident for Ident.id: AbstractProduction [ Id ] let AddNamesToFieldList [tree, tgn, fieldList] _ AppendFieldToFieldList [fieldList, field] where field _ CreateNamedField [Id, tgn] ; End. SaffronMakeElementList: Module = Begin ElementList for ElementList.empty: AbstractProduction [ ] let MakeElementList [tree, localContext] _ CreateEmptyEnumTypeTGN [localContext] ; for ElementList.more: AbstractProduction [ ElementList, Element ] let MakeElementList [tree, localContext] _ <localContext1, tgn> where localContext1 _ AppendElementToEnumTypeTGN [localContext2, tgn, elementName] where <localContext2, tgn> _ MakeElementList [ElementList, localContext] where elementName _ ElementName [Element] ; End. SaffronElementName: Module = Begin for Element.id: AbstractProduction [ Id ] let ElementName [tree] _ Id ; End; ���â��SaffronMethods.ThreeC4 (July 16, 1987 4:02:51 pm PDT) Copyright Ó 1987 by Xerox Corporation. All rights reserved. Lucy Hederman July 17, 1987 4:08:57 pm PDT Element ??? There are other Element Productions !!! eof... Ê��˜�codešœ5™5K™;K™*—K™�J˜8J˜�KšÏnœ˜K˜�š˜˜�codetabšÐizœÏbœžœ)˜OšžœE˜HLšžœi˜nLšœS˜SL˜WLšœŒ˜Œ—Lšœ˜——™�šžœŸœžœ"˜FLšžœY˜\L˜—L˜�šžœŸœžœ˜9šžœE˜HKšœU˜UKšœR˜R—Kšœ˜—K˜�—K˜�—K˜K˜�K˜$˜�K˜˜�šœžœ˜*Kšœ_˜_K˜—K˜�šœžœ ˜6šœQ˜QKšœl˜lK˜,—K˜—K˜�šœŸœžœ ˜5šœQ˜QKšœg˜gK˜,—K˜———K˜�K˜K˜�K˜%˜�K˜˜�šžœŸ œžœ!˜F˜ŒK˜k—K˜—K˜�šžœŸœžœ ˜1K˜‡K˜—K˜�—˜K˜�šžœœžœ˜5˜^K˜=K˜&K˜K—K˜——K˜�˜K˜�——˜*K˜�˜K˜�šžœŸ œžœ!˜F˜•K˜o—K˜—K˜�šžœŸœžœ ˜1K˜‰K˜—K˜�—˜K˜�šžœÐbnœžœ(˜H˜ŠK˜K—K˜——K˜�˜K˜�——˜*K˜�K˜ ˜�šžœŸœžœ#˜I˜fK˜G—K˜—K˜�šžœŸ œžœ ˜/K˜\K˜—K˜�—˜K˜�šžœŸœžœ˜'˜ZK˜(—K˜——K˜K˜�—˜&K˜�K˜˜�šžœŸœžœ˜-K˜PK˜K˜�—šžœŸœžœ˜A˜?K˜SK˜HK˜)—K˜—K˜�—K˜K˜�—šœ˜"headšÏz™L™'L™�šžœŸ œžœ˜)Kšžœ˜Kšœ˜—K˜�—K˜K˜�—K˜�K™K™�—�…—����Š��í��