DIRECTORY EDIFGrammar; EDIFGrammarDef2: CEDAR PROGRAM IMPORTS EDIFGrammar = {OPEN EDIFGrammar; one: REF ANY = NEW [INT _ 1]; DefineEm: PROC = { [] _ DL[$Technology, LIST[NameDef[], Opt[$NumberDefinition], StarCh[LIST[$Define, Oo[$Rename], $SimulationInfo, $SimulationMap, Oo[$GridMap], Oo[$FigureGroupDefault], $Comment, $UserData, Limit[$Repeat, 1], Limit[$Constraint, 1], Limit[$Assign, 1], Limit[$Block, 2], Limit[$Escape, 2], Limit[$Iterate, 2], Limit[$Redo, 2]]] ]]; [] _ DL[$NumberDefinition, LIST[$UnitSystem, StarCh[LIST[$Scale, $Comment, $UserData]] ]]; [] _ DC[$UnitSystem, LIST["si", $Identifier]]; [] _ DL[$Scale, LIST[$UnitType, $Number, $Number]]; [] _ DC[$UnitType, LIST["capacitance", "current", "distance", "resistance", "termperature", "time", "voltage"]]; [] _ DL[$Define, LIST[$Direction, $Type, $DefineObjects, Opt[Limit[$Default, 1]], Star[$Rename]]]; [] _ DC[$Direction, LIST["local", "input", "inout", "output", "unspecified"]]; [] _ DC[$Type, LIST["figuregroup", "port", "signal", Limit["String", 1], Limit["Integer", 1], Limit["Number", 1], Limit["Boolean", 1], Limit["Point", 1], Limit[$UnitType, 1]]]; [] _ DQ[$DefineObjects, LIST[$Multiple, Star[$DefineObject]], $DefineObject]; [] _ DC[$DefineObject, LIST[NameDef[], $ArrayDefinition]]; [] _ DL[$ArrayDefinition, LIST[NameDef[], Star[$WholeNumber]]]; [] _ DL[$Default, LIST[Star[$PrimitiveData]], 1]; [] _ DL[$SimulationInfo, LIST[NameDef[], $SimulationValue, $Arbitrate, $Isolated, Opt[$Rename]]]; [] _ DL[$SimulationValue, LIST[Star[NameDef[]]]]; [] _ DL[$Arbitrate, LIST[$Pairwise]]; [] _ DL[$Pairwise, LIST[Star[NameRef[]]]]; [] _ DL[$Isolated, LIST[NameRef[]]]; [] _ DL[$SimulationMap, LIST[$Reference, $Reference, StarCh[LIST[$StateMap, $Comment, $UserData]] ]]; [] _ DL[$StateMap, LIST[Plus[NameRef[]]]]; [] _ DL[$GridMap, LIST[$Number, $Number]]; [] _ DL[$FigureGroupDefault, LIST[StarCh[LIST[$FigureGroupSpecification, $Comment, $UserData]] ]]; [] _ DL[$FigureGroupSpecification, LIST[NameRef[], StarCh[LIST[Oo[$Width], Oo[$PathType], Oo[$BorderPattern], Oo[$FillPattern], Oo[$Color], $Comment, $UserData]] ]]; [] _ DL[$Width, LIST[$Coordinate]]; [] _ DC[$Coordinate, LIST[$WholeNumber], 0, 0]; [] _ DC[$Coordinate, LIST[$Expression], 1]; [] _ DL[$PathType, LIST[$Style, $Style]]; [] _ DC[$Style, LIST["extend", "truncate", "round"]]; [] _ DL[$BorderPattern, LIST[$Integer, $String]]; [] _ DL[$FillPattern, LIST[$Integer, $Integer, $String]]; [] _ DL[$Color, LIST[$Integer, $Integer, $Integer]]; [] _ DL[$Cell, LIST[NameDef[], Opt[$Status], Opt[$Rename], Opt[$ViewMap], StarCh[LIST[$View, $Comment, $UserData]] ]]; [] _ DL[$ViewMap, LIST[StarCh[LIST[$PortMap, $InstanceMap, $Comment, $UserData, Limit[$Block, 2], Limit[$Escape, 2], Limit[$Iterate, 2], Limit[$Redo, 2]]] ]]; [] _ DL[$PortMap, LIST[StarCh[LIST[$Reference, $Comment, $UserData]] ]]; [] _ DL[$InstanceMap, LIST[StarCh[LIST[$Reference, $Comment, $UserData]] ]]; [] _ DL[$View, LIST[$ViewType, NameDef[], Opt[$Status], Opt[$Interface], Opt[$Contents], Opt[$Rename], StarCh[LIST[$Comment, $Property]] ]]; [] _ DC[$ViewType, LIST["document", "behavior", "netlist", "schematic", "symbolic", "masklayout", "stranger"]]; [] _ DL[$Repeat, LIST[NameDef[], $Integer, $Integer, $Integer, Star[$Form]], 1]; [] _ DL[$Constraint, LIST[Star[$Boolean], Star[$Property]], 1]; [] _ DL[$Assign, LIST[NameRef[], Star[$Expression]], 1]; [] _ DC[$Expression, LIST[$Primitive, NameRef[], $FunctionApplication], 1]; [] _ DLU[$FunctionApplication, LIST[Star[$Expression]], 1]; [] _ DC[$FunctionName, LIST["+", "-", "*", "/", "abs", "floor", "fix", "ceiling", "xcoord", "ycoord", "point", "concat", "and", "or", "xor", "not", "false", "true", "andnot", "<", "=", ">"], 1]; [] _ DL[$Iterate, LIST[Star[$Form]], 2]; [] _ DL[$Block, LIST[Star[$Form]], 2]; [] _ DL[$Redo, LIST[$Boolean, Star[$Form]], 2]; [] _ DL[$Escape, LIST[$Boolean, Star[$Form]], 2]; [] _ DBL2[$TwoDArrayJoin, LIST[$Repeat, $Identifier, $WholeNumber, $WholeNumber, one, LR[LIST[$Repeat, $Identifier, $WholeNumber, $WholeNumber, one, LR[LIST[$Repeat, $Identifier, $WholeNumber, $WholeNumber, one, LR[LIST[$Repeat, $Identifier, $WholeNumber, $WholeNumber, one, LR[LIST[$Joined, LR[LIST[$Qualify, $Identifier, LR[LIST[$Member, $Identifier, $Identifier, $Identifier]]]], LR[LIST[$Qualify, $Identifier, LR[LIST[$Member, $Identifier, $Identifier, $Identifier]]]] ]] ]]]]]]]]; }; }. HEDIFGrammarDef2.Mesa Spreitzer, February 24, 1986 3:50:12 pm PST Ê– "cedar" style˜code™K™+—K˜KšÏk œ ˜K˜šÐbxœœ˜Kšœ ˜Kšœœ ˜K˜Kš œœœœœ˜K˜šÏnœœ˜Kšœœœ+œÿ˜ÇKšœœœœ"˜ZKšœœœ˜.Kšœœ œ˜3Kšœœ œY˜pKšœœ œM˜bKšœœ œ6˜NKšœœœ˜°Kšœœœ1˜MKšœœœ˜:Kšœœœ!˜?Kšœœ œ˜1KšœœœD˜aKšœœœ˜1Kšœœ œ ˜%Kšœœ œ˜*Kšœœ œ ˜$Kšœœœ œ%˜eKšœœ œ˜*Kšœœ œ˜*Kšœœœœ5˜bKšœœœœg˜¥Kšœœ œ˜#Kšœœœ˜/Kšœœœ˜+Kšœœ œ˜)Kšœœ œ!˜5Kšœœœ˜1Kšœœœ˜9Kšœœ œ ˜4Kšœœœ>œ!˜vKšœœ œœ|˜žKšœœ œœ&˜HKšœœœœ&˜LKšœœœ[œ˜ŒKšœœ œX˜oK˜Kšœœ œ;˜PKšœœœ&˜?Kšœœ œ#˜8Kšœœœ2˜KKšœœœ˜;Kšœœœ§˜ÂK˜Kšœœ œ˜(Kšœœ œ˜&Kšœœœ˜/Kšœœ œ˜1K˜˜Kšœ7˜;Kšœœ7˜>Kšœœ7˜>Kšœœ7˜>šœœ ˜Kšœœœœ4˜ZKšœœœœ3˜YK˜—K˜ —K˜—˜K˜—K˜——…—f