<> <> DIRECTORY EDIFGrammar; EDIFGrammarImpl3: CEDAR PROGRAM IMPORTS EDIFGrammar = {OPEN EDIFGrammar; DefineEm: PROC = { DL[$Interface, LIST[StarCh[LIST[$Define, $Unused, $Joined, $WeakJoined, $MustJoin, $Permutable, $Timing, $Simulate, Oo[$Body], $PortImplementation, Oo[$ArrayRelatedInfo], $Comment, $UserData, Limit[$Repeat, 1], Limit[$Constraint, 1], Limit[$Assign, 1], Limit[$Block, 2], Limit[$Escape, 2], Limit[$Iterate, 2], Limit[$Redo, 2]]] ]]; DL[$Unused, LIST[Star[$Reference]]]; DL[$Joined, LIST[StarCh[LIST[$Reference, $Joined, $WeakJoined]] ]]; DL[$WeakJoined, LIST[StarCh[LIST[$Reference, $Joined, $WeakJoined]] ]]; DL[$MustJoin, LIST[StarCh[LIST[$Reference, $Joined, $WeakJoined]] ]]; DL[$Permutable, LIST[StarCh[LIST[NameRef[], $NonPermutable, $Permutable]] ]]; DL[$NonPermutable, LIST[StarCh[LIST[NameRef[], $NonPermutable, $Permutable]] ]]; DL[$Timing, LIST[NameRef[], StarCh[LIST[$Delay, $Stable, $Comment, $UserData]] ]]; DL[$Delay, LIST[Star[$Transition], Star[$Reference]]]; DL[$Transition, LIST[NameRef[], NameRef[], $Value, Opt[$Value]]]; DL[$Stable, LIST[NameRef[], $Number, $Number, NameRef[], NameRef[], NameRef[]]]; DL[$Simulate, LIST[NameRef[], NameDef[], StarCh[LIST[Oo[$Rename], $PortListAlias, Oo[$IgnoreValue], $WaveValue, $Apply, $Comment, $UserData]] ]]; DL[$PortListAlias, LIST[NameDef[], $NameRefs]]; DL[$IgnoreValue, LIST[NameDef[]]]; DL[$WaveValue, LIST[NameDef[], $Number, $logicWaveform]]; DL[$Apply, LIST[$WholeNumber, $Number, StarCh[LIST[$LogicInput, $LogicOutput, $Comment, $UserData]] ]]; DL[$LogicInput, LIST[$NameRefs, $LogicWaveform]]; DL[$LogicOutput, LIST[$NameRefs, $LogicWaveform]]; DL[$LogicWaveform, LIST[Star[NameRef[]]]]; DL[$Body, LIST[StarCh[LIST[$FigureGroup, $Comment, $Property]] ]]; DL[$PortImplementation, LIST[NameRef[], StarCh[LIST[$FigureGroup, $Comment, $Property]] ]]; DL[$FigureGroup, LIST[$FigureGroupRef, StarCh[LIST[$Figure, $SignalGroup, $Comment, $UserData]] ]]; DC[$FigureGroupRef, LIST[$NameRef, $FigureGroupSpecification]]; DC[$Figure, LIST["Polygon", "Path", "Rectangle", "Dot", "Shape", "OpenShape", "Circle", "Annotate"]]; DL[$Polygon, LIST[Star[$Point], Star[$Property]]]; DL[$Path, LIST[Star[$Point], Star[$Property]]]; DL[$Rectangle, LIST[$Point, $Point, Star[$Property]]]; DL[$Dot, LIST[$Point, Star[$Property]]]; DL[$Shape, LIST[Star[$Corner], Star[$Property]]]; DL[$OpenShape, LIST[Star[$Corner], Star[$Property]]]; DL[$Circle, LIST[$Point, $Point, Star[$Property]]]; DL[$Point, LIST[$Coordinate, $Coordinate], 0, 0]; DC[$Point, LIST[$Expression], 1]; DC[$Corner, LIST[$Point, $Arc]]; DL[$Arc, LIST[$Point, $Point, $Point]]; DL[$Annotate, LIST[$String, $Point, $Point, $Justify]]; DC[$Justify, JdC[LIST[$Upper, $Center, $Lower], LIST[$Left, $Center, $Right]]]; DL[$SignalGroup, LIST[NameRef[], StarCh[LIST[$FigureGroup, $Comment, $UserData]] ]]; DL[$ArrayRelatedInfo, LIST[$ArrayUse, Opt[Ch[LIST[$Socket, $Plug]]], StarCh[LIST[$Comment, $UserData]] ]]; DC[$ArrayUse, LIST["ArrayMacro", "ArraySite", "BaseArray"]]; DL[$Socket, LIST[Star[$Transform]]]; DL[$Plug, LIST[Star[$SocketSet]]]; DL[$SocketSet, LIST[Star[$Instance], Star[$Transform]]]; DL[$Contents, LIST[StarCh[LIST[$Define, $Instance, $Unused, $Global, $Joined, $MustJoin, $Required, $Measured, $CriticalSignal, $FigureGroup, $Annotate, $Wire, $Section, Oo[$LogicModel], $Comment, $UserData, Limit[$Repeat, 1], Limit[$Constraint, 1], Limit[$Assign, 1], Limit[$Block, 2], Limit[$Escape, 2], Limit[$Iterate, 2], Limit[$Redo, 2]]] ]]; DL[$Instance, LIST[$References, NameRef[], NameDef[], Opt[$Rename], Opt[$Transform], Star[$Parameter], Star[$Property], Star[$PortInstance]]]; DQ[$References, LIST[$Multiple, Star[$Reference]], $Reference]; DL[$Transform, LIST[Opt[$ScaleX], Opt[$ScaleY], Opt[$Orientation], Opt[$Translate]]]; DL[$ScaleX, LIST[$Coordinate, $Coordinate]]; DL[$ScaleY, LIST[$Coordinate, $Coordinate]]; DC[$Orientation, LIST["r0", "r90", "r180", "r270", "mx", "myr90", "my", "mxr90"]]; DL[$Translate, LIST[$Place, $Place]]; DC[$Place, LIST[$Coordinate, $Step]]; DL[$Step, LIST[$Coordinate, $WholeNumber, $Coordinate]]; DL[$Parameter, LIST[NameRef[], $ParameterValue]]; DQ[$ParameterValue, LIST[$Multiple, Star[$PrimitiveData]], $PrimitiveData, 0, 0]; DQ[$ParameterValue, LIST[$Multiple, Star[$Expression]], $Expression, 1]; DC[$PrimitiveData, LIST[$Primitive, $True, $False]]; DC[$Primitive, LIST[$String, $Integer, $ScaledInteger]]; DL[$PortInstance, LIST[NameRef[], Star[$Property]]]; DL[$Global, LIST[Star[NameRef[]]]]; DL[$Required, LIST[NameRef[], Star[$Delay]]]; DL[$Measured, LIST[NameRef[], Star[$Delay]]]; DL[$CriticalSignal, LIST[$WholeNumber, Star[NameRef[]]]]; DL[$Wire, LIST[NameRef[], NameRef[], Opt[$FigureGroup], Star[$Property]]]; DL[$Section, LIST[$String, StarCh[LIST[$String, $Instance, $Section]] ]]; DL[$LogicModel, LIST[NameRef[], $LogicOtherwise, StarCh[LIST[$LogicState, $Comment, $UserData]] ]]; DL[$LogicOtherwise, LIST[NameRef[]]]; DL[$LogicState, LIST[Star[$Condition], $Result]]; DL[$Condition, LIST[Star[$WFF]]]; DL[$Result, LIST[Star[$WFF]]]; DL[$WFF, LIST[NameRef[], NameRef[], $Number, $Number]]; }; }.