<> <> 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]] ]]; }; }.