DIRECTORY EDIFGrammar; EDIFGrammarDef1: 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[$EDIFLevelName]]; [] _ DC[$EDIFLevelName, LIST[NEW[INT _ 0], NEW[INT _ 1], NEW[INT _ 2]]]; [] _ 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]]]; [] _ 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]]; [] _ DC[$Name, LIST[$Identifier]]; --I made this up [] _ 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]] ]]; }; }. HEDIFGrammarDef1.Mesa Spreitzer, February 22, 1986 9:30:04 pm PST Κu– "cedar" style˜code™K™+—K˜KšΟk œ ˜K˜šΠbxœœ˜Kšœ ˜Kšœœ ˜K˜šΟnœœ˜Kšœœœ:œ8˜‰Kšœœ œ,œ$˜iKšœœœ ˜:Kšœœ œ˜*Kšœœœœœœœœœ˜HKšœœ œœ'˜UKšœœ œ>˜VKšœœœ˜6Kšœœ œ˜'Kšœœ œ˜3Kšœœ œœC˜pKšœœ œ˜(Kšœœ œ˜2Kšœœ œ˜'Kšœœœ4˜NKšœœ œ ˜#Kšœœ œœ/˜XKšœœ œ˜-Kšœœ œœ/˜\Kšœœ œ ˜!Kšœœ œ)˜@Kšœœ œ˜(KšœœœΟc˜3Kšœœ œ˜2Kšœœœ˜,Kšœœœ˜,Kšœœ œ˜+Kšœœ œ;œ˜nKšœœ œ&˜>Kšœœ œ0œ˜eKšœœœ˜:Kšœœœ˜0Kšœœ œ˜)Kšœœ œ"˜7Kšœœ œ˜'Kšœœ˜7Kšœœ œ)˜?Kšœœœ'˜@Kšœœ œ˜Kšœœœ˜ Kšœœ œ˜-Kšœœ œ˜(Kšœœœ˜Kšœœ œ˜Kšœœ œ)˜@Kšœœ œAœ!˜|˜K˜——K˜——…— l)