DIRECTORY EDIFGrammar; EDIFGrammarImpl1: CEDAR PROGRAM IMPORTS EDIFGrammar = {OPEN EDIFGrammar; DefineEm: PROC = { DL[$EDIF, LIST[NameDef[], $Status, Star[$Keyword], Opt[$Rename], StarCh[LIST[$Design, $External, $Library, $Comment, $UserData]] ]]; DL[$Status, LIST[Opt[$EDIFVersion], Opt[$EDIFLevel], StarCh[LIST[$Written, $Comment, $UserData]] ]]; DL[$EDIFVersion, LIST[$Integer, $Integer, $Integer]]; DL[$EDIFLevel, LIST[$Integer]]; DL[$Written, LIST[$TimeStamp, StarCh[LIST[$Accounting, $Comment, $UserData]] ]]; DL[$TimeStamp, LIST[$Integer, $Integer, $Integer, $Integer, $Integer, $Integer]]; DL[$Accounting, LIST[$Identifier, Opt[$String]]]; DL[$Comment, LIST[Star[$String]]]; DL[$UserData, LIST[$Identifier, Star[$Form]]]; DC[$Form, LIST[$String, $Integer, $Identifier, $List]]; DL[$Keyword, LIST[NameDef[], StarCh[LIST[$Formal, $Optional, $Extra, $FormalValue, $ForEach, $Comment]] ]]; DL[$Formal, LIST[Star[NameDef[]]]]; DL[$Optional, LIST[NameDef[], $FormalValue]]; DL[$Extra, LIST[Star[NameDef[]]]]; DC[$FormalValue, LIST[$String, $Integer, NameRef[], $BuildName, $Build]]; DL[$BuildName, LIST[$String]]; DL[$Build, LIST[$KeyRef, StarCh[LIST[$FormalValue, $ForEach, $Index, $Comment]] ]]; DC[$KeyRef, LIST[$Identifier, $String]]; DL[$ForEach, LIST[$NameRefs, StarCh[LIST[$FormalValue, $ForEach, $Index, $Comment]] ]]; DL[$Index, LIST[NameRef[]]]; DQ[$NameRefs, LIST[$Multiple, Star[NameRef[]]], NameRef[]]; DC[$NameRef, LIST[$Name, $Member]]; DL[$Member, LIST[$Name, Star[$WholeNumber]]]; DC[$WholeNumber, LIST[$Integer], 0, 0]; DC[$WholeNumber, LIST[$Expression], 1]; DL[$Rename, LIST[NameRef[], $String]]; DL[$Design, LIST[NameDef[], $Reference, Opt[$Status], Opt[$Rename], StarCh[LIST[$Comment, $Property]] ]]; DQ[$Reference, LIST[$Qualify, Star[NameRef[]]], NameRef[]]; DL[$Property, LIST[$PropertyType, $Identifier, Opt[$Data], StarCh[LIST[$Comment, $Property]] ]]; DC[$PropertyType, LIST["EDIF", "User", $Identifier]]; DC[$Data, LIST[$String, $Value, $Boolean]]; DC[$Value, LIST[$Number, $MiNoMax]]; DC[$Number, LIST[$Integer, $ScaledInteger], 0, 0]; DC[$Number, LIST[$Expression], 1]; DL2[$ScaledInteger, LIST["e", $Integer, $Integer]]; DL[$MiNoMax, LIST[$RangeValue, $RangeValue, $RangeValue]]; DC[$RangeValue, LIST[$Number, $Undefined, $Unconstrained]]; DL[$Undefined, LIST[]]; DL[$Unconstrained, LIST[]]; DC[$Boolean, LIST[$True, $False], 0, 0]; DC[$Boolean, LIST[$Expression], 1]; DL[$True, LIST[]]; DL[$False, LIST[]]; DL[$External, LIST[NameDef[], Opt[$Status], Opt[$Rename]]]; DL[$Library, LIST[NameDef[], Opt[$Status], Opt[$Technology], Opt[$Rename], StarCh[LIST[$Cell, $Comment, $UserData]] ]]; }; }. HEDIFGrammarImpl1.Mesa Spreitzer, February 4, 1986 5:38:36 pm PST Κσ– "cedar" style˜code™K™*—K˜KšΟk œ ˜K˜šΠbxœœ˜Kšœ ˜Kšœœ ˜K˜šΟnœœ˜Kšœœ:œ8˜„Kšœ œ,œ$˜dKšœœ ˜5Kšœ œ ˜Kšœ œœ'˜PKšœ œ>˜QKšœœ˜1Kšœ œ˜"Kšœ œ˜.Kšœœ)˜7Kšœ œœC˜kKšœ œ˜#Kšœ œ˜-Kšœ œ˜"Kšœœ4˜IKšœ œ ˜Kšœ œœ/˜SKšœ œ˜(Kšœ œœ/˜WKšœ œ ˜Kšœ œ)˜;Kšœ œ˜#Kšœ œ˜-Kšœœ˜'Kšœœ˜'Kšœ œ˜&Kšœ œ;œ˜iKšœ œ(˜;Kšœ œ0œ˜`Kšœœ˜5Kšœœ˜+Kšœ œ˜$Kšœ œ"˜2Kšœ œ˜"Kšœœ˜3Kšœ œ)˜:Kšœœ'˜;Kšœ œ˜Kšœœ˜Kšœ œ˜(Kšœ œ˜#Kšœœ˜Kšœ œ˜Kšœ œ)˜;Kšœ œAœ!˜w˜K˜——K˜——…— J