EDIFGrammarImpl1.Mesa
Spreitzer, February 4, 1986 5:38:36 pm PST
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]] ]];
};
}.