options { LOOKAHEAD = 2; IGNORE_CASE = true; STATIC = false; } PARSER_BEGIN(EdifParserCore) class EdifParserCore { } PARSER_END(EdifParserCore) /* WHITE SPACE */ SKIP : { " " | "\t" | "\n" | "\r" | "\f" } /* RESERVED WORDS AND LITERALS */ TOKEN : { < ANGLE: "ANGLE" > | < BEHAVIOR: "BEHAVIOR" > | < CALCULATED: "CALCULATED" > | < CAPACITANCE: "CAPACITANCE" > | < CENTERCENTER: "CENTERCENTER" > | < CENTERLEFT: "CENTERLEFT" > | < CENTERRIGHT: "CENTERRIGHT" > | < CHARGE: "CHARGE" > | < CONDUCTANCE: "CONDUCTANCE" > | < CURRENT: "CURRENT" > | < DISTANCE: "DISTANCE" > | < DOCUMENT: "DOCUMENT" > | < ENERGY: "ENERGY" > | < EXTEND: "EXTEND" > | < FLUX: "FLUX" > | < FREQUENCY: "FREQUENCY" > | < GENERIC: "GENERIC" > | < GRAPHIC: "GRAPHIC" > | < INDUCTANCE: "INDUCTANCE" > | < INOUT: "INOUT" > | < INPUT: "INPUT" > | < LOGICMODEL: "LOGICMODEL" > | < LOWERCENTER: "LOWERCENTER" > | < LOWERLEFT: "LOWERLEFT" > | < LOWERRIGHT: "LOWERRIGHT" > | < MASKLAYOUT: "MASKLAYOUT" > | < MASS: "MASS" > | < MEASURED: "MEASURED" > | < MX: "MX" > | < MXR90: "MXR90" > | < MY: "MY" > | < MYR90: "MYR90" > | < NETLIST: "NETLIST" > | < OUTPUT: "OUTPUT" > | < PCBLAYOUT: "PCBLAYOUT" > | < POWER: "POWER" > | < R0: "R0" > | < R180: "R180" > | < R270: "R270" > | < R90: "R90" > | < REQUIRED: "REQUIRED" > | < RESISTANCE: "RESISTANCE" > | < RIPPER: "RIPPER" > | < ROUND: "ROUND" > | < SCHEMATIC: "SCHEMATIC" > | < STRANGER: "STRANGER" > | < SYMBOLIC: "SYMBOLIC" > | < TEMPERATURE: "TEMPERATURE" > | < TIE: "TIE" > | < TIME: "TIME" > | < TRUNCATE: "TRUNCATE" > | < UPPERCENTER: "UPPERCENTER" > | < UPPERLEFT: "UPPERLEFT" > | < UPPERRIGHT: "UPPERRIGHT" > | < VOLTAGE: "VOLTAGE" > | < ACLOAD: "acLoad" > | < AFTER: "after" > | < ANNOTATE: "annotate" > | < APPLY: "apply" > | < ARC: "arc" > | < ARRAY: "array" > | < ARRAYMACRO: "arrayMacro" > | < ARRAYRELATEDINFO: "arrayRelatedInfo" > | < ARRAYSITE: "arraySite" > | < ATLEAST: "atLeast" > | < ATMOST: "atMost" > | < AUTHOR: "author" > | < BASEARRAY: "baseArray" > | < BECOMES: "becomes" > | < BETWEEN: "between" > | < BOOLEAN: "boolean" > | < BOOLEANDISPLAY: "booleanDisplay" > | < BOOLEANMAP: "booleanMap" > | < BORDERPATTERN: "borderPattern" > | < BORDERWIDTH: "borderWidth" > | < BOUNDINGBOX: "boundingBox" > | < CELL: "cell" > | < CELLREF: "cellRef" > | < CELLTYPE: "cellType" > | < CHANGE: "change" > | < CIRCLE: "circle" > | < COLOR: "color" > | < COMMENT: "comment" > | < COMMENTGRAPHICS: "commentGraphics" > | < COMPOUND: "compound" > | < CONNECTLOCATION: "connectLocation" > | < CONTENTS: "contents" > | < CORNERTYPE: "cornerType" > | < CRITICALITY: "criticality" > | < CURRENTMAP: "currentMap" > | < CURVE: "curve" > | < CYCLE: "cycle" > | < DATAORIGIN: "dataOrigin" > | < DCFANINLOAD: "dcFaninLoad" > | < DCFANOUTLOAD: "dcFanoutLoad" > | < DCMAXFANIN: "dcMaxFanin" > | < DCMAXFANOUT: "dcMaxFanout" > | < DELAY: "delay" > | < DELTA: "delta" > | < DERIVATION: "derivation" > | < DESIGN: "design" > | < DESIGNATOR: "designator" > | < DIFFERENCE: "difference" > | < DIRECTION: "direction" > | < DISPLAY: "display" > | < DOMINATES: "dominates" > | < DOT: "dot" > | < DURATION: "duration" > | < E: "e" > | < EDIF: "edif" > | < EDIFLEVEL: "edifLevel" > | < EDIFVERSION: "edifVersion" > | < ENCLOSUREDISTANCE: "enclosureDistance" > | < ENDTYPE: "endType" > | < ENTRY: "entry" > | < EVENT: "event" > | < EXACTLY: "exactly" > | < EXTERNAL: "external" > | < FABRICATE: "fabricate" > | < FALSE: "false" > | < FIGURE: "figure" > | < FIGUREAREA: "figureArea" > | < FIGUREGROUP: "figureGroup" > | < FIGUREGROUPOBJECT: "figureGroupObject" > | < FIGUREGROUPOVERRIDE: "figureGroupOverride" > | < FIGUREGROUPREF: "figureGroupRef" > | < FIGUREPERIMETER: "figurePerimeter" > | < FIGUREWIDTH: "figureWidth" > | < FILLPATTERN: "fillPattern" > | < FOLLOW: "follow" > | < FORBIDDENEVENT: "forbiddenEvent" > | < GLOBALPORTREF: "globalPortref" > | < GREATERTHAN: "greaterThan" > | < GRIDMAP: "gridMap" > | < IGNORE: "ignore" > | < INCLUDEFIGUREGROUP: "includeFigureGroup" > | < INITIAL: "initial" > | < INSTANCE: "instance" > | < INSTANCEBACKANNOTATE: "instanceBackAnnotate" > | < INSTANCEGROUP: "instanceGroup" > | < INSTANCEMAP: "instanceMap" > | < INSTANCEREF: "instanceRef" > | < INTEGER: "integer" > | < INTEGERDISPLAY: "integerDisplay" > | < INTERFACE: "interface" > | < INTERFIGUREGROUPSPACING: "interFigureGroupSpacing" > | < INTERSECTION: "intersection" > | < INTRAFIGUREGROUPSPACING: "intraFigureGroupSpacing" > | < INVERSE: "inverse" > | < ISOLATED: "isolated" > | < JOINED: "joined" > | < JUSTIFY: "justify" > | < KEYWORDDISPLAY: "keywordDisplay" > | < KEYWORDLEVEL: "keywordLevel" > | < KEYWORDMAP: "keywordMap" > | < LESSTHAN: "lessThan" > | < LIBRARY: "library" > | < LIBRARYREF: "libraryRef" > | < LISTOFNETS: "listofNets" > | < LISTOFPORTS: "listOfPorts" > | < LOADDELAY: "loadDelay" > | < LOGICASSIGN: "logicAssign" > | < LOGICINPUT: "logicInput" > | < LOGICLIST: "logicList" > | < LOGICMAPINPUT: "logicMapinput" > | < LOGICMAPOUTPUT: "logicMapOutput" > | < LOGICONEOF: "logicOneOf" > | < LOGICOUTPUT: "logicOutput" > | < LOGICPORT: "logicPort" > | < LOGICREF: "logicRef" > | < LOGICVALUE: "logicValue" > | < LOGICWAVEFORM: "logicWaveform" > | < MAINTAIN: "maintain" > | < MATCH: "match" > | < MEMBER: "member" > | < MINOMAX: "miNoMax" > | < MINOMAXDISPLAY: "miNoMaxDisplay" > | < MNM: "mnm" > | < MULTIPLEVALUESET: "multipleValueSet" > | < MUSTJOIN: "mustJoin" > | < NAME: "name" > | < NET: "net" > | < NETBACKANNOTATE: "netBackAnnotate" > | < NETBUNDLE: "netBundle" > | < NETDELAY: "netDelay" > | < NETGROUP: "netGroup" > | < NETMAP: "netMap" > | < NETREF: "netRef" > | < NOCHANGE: "noChange" > | < NONPERMUTABLE: "nonPermutable" > | < NOTALLOWED: "notAllowed" > | < NOTCHSPACING: "notchSpacing" > | < NUMBER: "number" > | < NUMBERDEFINITION: "numberDefinition" > | < NUMBERDISPLAY: "numberDisplay" > | < OFFPAGECONNECTOR: "offPageConnector" > | < OFFSETEVENT: "offsetEvent" > | < OPENSHAPE: "openShape" > | < ORIENTATION: "orientation" > | < ORIGIN: "origin" > | < OVERHANGDISTANCE: "overhangDistance" > | < OVERLAPDISTANCE: "overlapDistance" > | < OVERSIZE: "oversize" > | < OWNER: "owner" > | < PAGE: "page" > | < PAGESIZE: "pageSize" > | < PARAMETER: "parameter" > | < PARAMETERASSIGN: "parameterAssign" > | < PARAMETERDISPLAY: "parameterDisplay" > | < PATH: "path" > | < PATHDELAY: "pathDelay" > | < PATHWIDTH: "pathWidth" > | < PERMUTABLE: "permutable" > | < PHYSICALDESIGNRULE: "physicalDesignRule" > | < PLUG: "plug" > | < POINT: "point" > | < POINTDISPLAY: "pointDisplay" > | < POINTLIST: "pointList" > | < POLYGON: "polygon" > | < PORT: "port" > | < PORTBACKANNOTATE: "portBackAnnotate" > | < PORTBUNDLE: "portBundle" > | < PORTDELAY: "portDelay" > | < PORTGROUP: "portGroup" > | < PORTIMPLEMENTATION: "portImplementation" > | < PORTINSTANCE: "portInstance" > | < PORTLIST: "portList" > | < PORTLISTALIAS: "portListAlias" > | < PORTMAP: "portMap" > | < PORTREF: "portRef" | "portref" > | < PROGRAM: "program" > | < PROPERTY: "property" > | < PROPERTYDISPLAY: "propertyDisplay" > | < PROTECTIONFRAME: "protectionFrame" > | < PT: "pt" > | < RANGEVECTOR: "rangeVector" > | < RECTANGLE: "rectangle" > | < RECTANGLESIZE: "rectangleSize" > | < RENAME: "rename" > | < RESOLVES: "resolves" > | < SCALE: "scale" > | < SCALEX: "scalex" > | < SCALEY: "scaley" > | < SECTION: "section" > | < SHAPE: "shape" > | < SIMULATE: "simulate" > | < SIMULATIONINFO: "simulationInfo" > | < SINGLEVALUESET: "singleValueSet" > | < SITE: "site" > | < SOCKET: "socket" > | < SOCKETSET: "socketSet" > | < STATUS: "status" > | < STEADY: "steady" > | < STRING: "string" > | < STRINGDISPLAY: "stringDisplay" > | < STRONG: "strong" > | < SYMBOL: "symbol" > | < SYMMETRY: "symmetry" > | < TABLE: "table" > | < TABLEDEFAULT: "tableDefault" > | < TECHNOLOGY: "technology" > | < TEXTHEIGHT: "textheight" > | < TIMEINTERVAL: "timeinterval" > | < TIMESTAMP: "timeStamp" > | < TIMING: "timing" > | < TRANSFORM: "transform" > | < TRANSITION: "transition" > | < TRIGGER: "trigger" > | < TRUE: "true" > | < UNCONSTRAINED: "unconstrained" > | < UNDEFINED: "undefined" > | < UNION: "union" > | < UNIT: "unit" > | < UNUSED: "unused" > | < USERDATA: "userData" > | < VERSION: "version" > | < VIEW: "view" > | < VIEWLIST: "viewList" > | < VIEWMAP: "viewMap" > | < VIEWREF: "viewRef" > | < VIEWTYPE: "viewType" > | < VISIBLE: "visible" > | < VOLTAGEMAP: "voltageMap" > | < WAVEVALUE: "waveValue" > | < WEAK: "weak" > | < WEAKJOINED: "weakJoined" > | < WHEN: "when" > | < WRITTEN: "written" > /* level 1 reserved words */ | < ABS: "abs" > | < AND: "and" > | < CEILING: "ceiling" > | < CONCAT: "concat" > | < CONSTANT: "constant" > | < CONSTRAINT: "constraint" > | < DIVIDE: "divide" > | < EQUAL: "equal" > | < FIX: "fix" > | < FLOOR: "floor" > | < INCREASING: "increasing" > | < MAX: "max" > | < MIN: "min" > | < MOD: "mod" > | < NEGATE: "negate" > | < NOT: "not" > | < OR: "or" > | < POINTSUBTRACT: "pointSubtract" > | < POINTSUM: "pointSum" > | < PRODUCT: "product" > | < STRICTLYINCREASING: "strictlyIncreasing" > | < SUBTRACT: "subtract" > | < SUM: "sum" > | < VARIABLE: "variable" > | < XCOORD: "xCoord" > | < XOR: "xor" > | < YCOORD: "yCoord" > } /* LITERALS */ TOKEN : { < INTEGER_TOK: (["-","+"])? ["0"-"9"] (["0"-"9"])* > | < STRING_TOK: "\"" (~["\""])* "\"" > } /* IDENFIERS */ TOKEN : { < IDENTIFIER: (|"&") (||"_")* > | < #LETTER: [ "A"-"Z", "a"-"z"] > | < #DIGIT: ["0"-"9"] > } TOKEN : /* SEPARATORS */ { < LBR: "(" > | < RBR: ")" > } /***************************************** * THE JAVA LANGUAGE GRAMMAR STARTS HERE * *****************************************/ /* * Program structuring syntax follows. */ void edif() : {} { edifFileName() edifVersion() edifLevel() keywordMap() ( status() | external() | library() | design() | comment() | userData() )* } void edifFileName() : {} { nameDef() } void edifLevel() : {} { } void edifVersion() : {} { } void acLoad() : {} { ( miNoMaxValue() | miNoMaxDisplay() ) } void after() : {} { miNoMaxValue() ( logicAssign() | follow() | maintain() | comment() | userData() )* } void annotate() : {} { ( stringValue() | stringDisplay() ) } void apply() : {} { cycle() ( logicInput() | logicOutput() | comment() | userData() )* } void arc() : {} { pointValue() pointValue() pointValue() } void array() : {} { nameDef() integerValue() ( integerValue() )* } void arrayMacro() : {} { plug() } void arrayRelatedInfo() : {} { ( arrayMacro() | arraySite() | baseArray() ) ( comment() | userData() )* } void arraySite() : {} { socket() } void atLeast() : {} { numberValue() } void atMost() : {} { numberValue() } void author() : {} { } void baseArray() : {} { } void becomes() : {} { ( logicNameRef() | logicList() | logicOneOf() ) } void between() : {} { ( atLeast() | greaterThan() ) ( atMost() | lessThan() ) } void myBoolean() : {} { ( booleanValue() | booleanDisplay() | myBoolean() )* } void booleanDisplay() : {} { booleanValue() ( display() )* } void booleanMap() : {} { booleanValue() } /* this function is more detailed in the level 1 edif description void booleanValue() : {} { myFalse() | myTrue() } */ void borderPattern() : {} { integerValue() integerValue() myBoolean() } void borderWidth() : {} { integerValue() } void boundingBox() : {} { rectangle() } void cell() : {} { cellNameDef() cellType() ( status() | view() | viewMap() | property() | comment() | userData() )* } void cellNameDef() : {} { nameDef() } void cellNameRef() : {} { nameRef() } void cellRef() : {} { cellNameRef() [ libraryRef() ] } void cellType() : {} { ( | | ) } void change() : {} { ( portNameRef() | portRef() | portList() ) [ transition() | becomes() ] } void circle() : {} { pointValue() pointValue() ( property() )* } void color() : {} { scaledInteger() scaledInteger() scaledInteger() } void comment() : {} { ( )* } void commentGraphics() : {} { ( annotate() | figure() | instance() | boundingBox() | property() )* } void compound() : {} { ( logicNameRef() )* } void connectLocation() : {} { ( figure() )* } /* this productions has a more detailed version in the level 1 void contents() : {} { ( instance() | offPageConnector() | figure() | section() | net() | simulate() | when() | follow() | logicPort() | boundingBox() | comment() )* } */ void cornerType() : {} { ( | | ) } void criticality() : {} { ( integerValue() | integerDisplay() ) } void currentMap() : {} { miNoMaxValue() } void curve() : {} { ( arc() | pointValue() )* } void cycle() : {} { integerValue() [ duration() ] } void dataOrigin() : {} { [ version() ] } void dcFaninLoad() : {} { ( numberValue() | numberDisplay() ) } void dcFanoutLoad() : {} { ( numberValue() | numberDisplay() ) } void dcMaxFanin() : {} { ( numberValue() | numberDisplay() ) } void dcMaxFanout() : {} { ( numberValue() | numberDisplay() ) } void delay() : {} { ( miNoMaxValue() | miNoMaxDisplay() ) } void delta() : {} { ( pointValue() )* } void derivation() : {} { ( | | ) } void design() : {} { designNameDef() cellRef() ( status() | property() | comment() | userData() )* } void designator() : {} { ( stringValue() | stringDisplay() ) } void designNameDef() : {} { nameDef() } void difference() : {} { ( figureGroupRef() | figureOp() ) ( figureGroupRef() | figureOp() )* } void direction() : {} { ( | | ) } void display() : {} { ( figureGroupNameRef() | figureGroupOverride() ) [ justify() ] [ orientation() ] [ origin() ] } void dominates() : {} { ( logicNameRef() )* } void dot() : {} { pointValue() ( property() )* } void duration() : {} { numberValue() } void e() : {} { } void enclosureDistance() : {} { ruleNameDef() figureGroupObject() figureGroupObject() ( range() | singleValueSet() ) ( comment() | userData() )* } void endType() : {} { ( | | ) } void entry() : {} { ( match() | change() | steady() ) ( logicRef() | portRef() | noChange() | table() ) [ delay() | loadDelay() ] } void event() : {} { ( portRef() | portList() | portGroup() | netRef() | netGroup() ) ( transition() | becomes() )* } void exactly() : {} { numberValue() } void external() : {} { libraryNameDef() edifLevel() technology() ( status() | cell() | comment() | userData() )* } void fabricate() : {} { layerNameDef() figureGroupNameRef() } void myFalse() : {} { } void figure() : {} {
( figureGroupNameRef() | figureGroupOverride() ) ( circle() | dot() | openShape() | path() | polygon() | rectangle() | shape() | comment() | userData() )* } void figureArea() : {} { ruleNameDef() figureGroupObject() ( range() | singleValueSet() ) ( comment() | userData() )* } void figureGroup() : {} { figureGroupNameDef() ( cornerType() | endType() | pathWidth() | borderWidth() | color() | fillPattern() | textHeight() | visible() | includeFigureGroup() | property() | comment() | userData() )* } void figureGroupNameDef() : {} { nameDef() } void figureGroupNameRef() : {} { nameDef() } void figureGroupObject() : {} { ( figureGroupNameRef() | figureGroupRef() | figureOp() ) } void figureGroupOverride() : {} { figureGroupNameRef() ( cornerType() | endType() | pathWidth() | borderWidth() | color() | fillPattern() | borderPattern() | textHeight() | visible() | property() | comment() | userData() )* } void figureGroupRef() : {} { figureGroupNameRef() [ libraryRef() ] } void figureOp() : {} { ( difference() | intersection() | inverse() | oversize() | union() ) } void figurePerimeter() : {} { ruleNameDef() figureGroupObject() ( range() | singleValueSet() ) ( comment() | userData() )* } void figureWidth() : {} { ruleNameDef() figureGroupObject() ( range() | singleValueSet() ) ( comment() | userData() )* } void fillPattern() : {} { integerValue() integerValue() myBoolean() } void follow() : {} { ( portNameRef() | portRef() ) ( portRef() | table() ) [ delay() | loadDelay() ] } void forbiddenEvent() : {} { timeInterval() ( event() )* } void form() : {} { keywordNameRef() ( | | ident() | form() )* } void globalPortRef() : {} { portNameRef() } void greaterThan() : {} { numberValue() } void gridMap() : {} { numberValue() numberValue() } void ignore() : {} { } void includeFigureGroup() : {} { ( figureGroupRef() | figureOp() ) } void initial() : {} { } void instance() : {} { instanceNameDef() ( viewRef() | viewList() ) ( transform() | parameterAssign() | portInstance() | designator() | timing() | property() | comment() | userData() )* } void instanceBackAnnotate() : {} { instanceRef() ( designator() | timing() | property() | comment() )* } void instanceGroup() : {} { ( instanceRef() )* } void instanceMap() : {} { ( instanceRef() | instanceGroup() | comment() | userData() )* } void instanceNameDef() : {} { nameDef() | array() } void instanceNameRef() : {} { nameRef() | member() } void instanceRef() : {} { instanceNameRef() [ instanceRef() | viewRef() ] } void integer() : {} { ( integerValue() | integerDisplay() | integer() )* } void integerDisplay() : {} { integerValue() ( display() )* } /* there is a more detailed production in level 1 void integerValue() : {} { } */ /* there is a more detailed productions in level 1 void myInterface() : {} { ( port() | portBundle() | symbol() | protectionFrame() | arrayRelatedInfo() | parameter() | joined() | mustJoin() | weakJoined() | permutable() | timing() | simulate() | designator() | property() | comment() | userData() )* } */ void interFigureGroupSpacing() : {} { ruleNameDef() figureGroupObject() figureGroupObject() ( range() | singleValueSet() ) ( comment() | userData() )* } void intersection() : {} { ( figureGroupRef() | figureOp() ) ( figureGroupRef() | figureOp() )* } void intraFigureGroupSpacing() : {} { ruleNameDef() figureGroupObject() ( range() | singleValueSet() ) ( comment() | userData() )* } void inverse() : {} { ( figureGroupRef() | figureOp() ) } void isolated() : {} { } void joined() : {} { ( portRef() | portList() | globalPortRef() )* } void justify() : {} { ( | | | | | | | | ) } void keywordDisplay() : {} { keywordNameRef() ( display() )* } void keywordLevel() : {} { } void keywordMap() : {} { keywordLevel() ( comment() )* } void keywordNameRef() : {} { ident() } void layerNameDef() : {} { nameDef() } void lessThan() : {} { numberValue() } void library() : {} { libraryNameDef() edifLevel() technology() ( status() | cell() | comment() | userData() )* } void libraryNameDef() : {} { nameDef() } void libraryNameRef() : {} { nameRef() } void libraryRef() : {} { libraryNameRef() } void listOfNets() : {} { ( net() )* } void listOfPorts() : {} { ( port() | portBundle() )* } void loadDelay() : {} { ( miNoMaxValue() | miNoMaxDisplay() ) ( miNoMaxValue() | miNoMaxDisplay() ) } void logicAssign() : {} { ( portNameRef() | portRef() ) ( portRef() | logicRef() | table() ) [ delay() | loadDelay() ] } void logicInput() : {} { ( portNameRef() | portRef() | portList() ) logicWaveform() } void logicList() : {} { ( logicNameRef() | logicOneOf() | ignore() )* } void logicMapInput() : {} { ( logicRef() )* } void logicMapOutput() : {} { ( logicRef() )* } void logicNameDef() : {} { nameDef() } void logicNameRef() : {} { nameRef() } void logicOneOf() : {} { ( logicNameRef() | logicList() )* } void logicOutput() : {} { ( portNameRef() | portRef() | portList() ) logicWaveform() } void logicPort() : {} { portNameDef() ( property() | comment() | userData() )* } void logicRef() : {} { logicNameRef() [ libraryRef() ] } void logicValue() : {} { logicNameDef() ( voltageMap() | currentMap() | booleanMap() | compound() | weak() | strong() | dominates() | logicMapOutput() | logicMapInput() | isolated() | resolves() | property() | comment() | userData() )* } void logicWaveform() : {} { ( logicNameRef() | logicList() | logicOneOf() | ignore() )* } void maintain() : {} { ( portNameRef() | portRef() ) [ delay() | loadDelay() ] } void match() : {} { ( portNameRef() | portRef() | portList() ) ( logicNameRef() | logicList() | logicOneOf() ) } void member() : {} { nameRef() integerValue() ( integerValue() )* } void miNoMax() : {} { ( miNoMaxValue() | miNoMaxDisplay() | miNoMax() )* } void miNoMaxDisplay() : {} { miNoMaxValue() ( display() )* } /* there is a more detailed productions in level 1 void miNoMaxValue() : {} { numberValue() | mnm() } */ void mnm() : {} { ( numberValue() | undefined() | unconstrained() ) ( numberValue() | undefined() | unconstrained() ) ( numberValue() | undefined() | unconstrained() ) } void multipleValueSet() : {} { ( rangeVector() )* } void mustJoin() : {} { ( portRef() | portList() | weakJoined() | joined() )* } void name() : {} { ident() ( display() )* } void nameDef() : {} { ident() | name() | rename() } void nameRef() : {} { ident() | name() } void net() : {} { netNameDef() joined() ( criticality() | netDelay() | figure() | net() | instance() | commentGraphics() | property() | comment() | userData() )* } void netBackAnnotate() : {} { netRef() ( netDelay() | criticality() | property() | comment() )* } void netBundle() : {} { netNameDef() listOfNets() ( figure() | commentGraphics() | property() | comment() | userData() )* } void netDelay() : {} { derivation() delay() ( transition() | becomes() )* } void netGroup() : {} { ( netNameRef() | netRef() )* } void netMap() : {} { ( netRef() | netGroup() | comment() | userData() )* } void netNameDef() : {} { nameDef() | array() } void netNameRef() : {} { nameRef() | member() } void netRef() : {} { netNameRef() [ netRef() | instanceRef() | viewRef() ] } void noChange() : {} { } void nonPermutable() : {} { ( portRef() | permutable() )* } void notAllowed() : {} { ruleNameDef() figureGroupObject() ( comment() | userData() )* } void notchSpacing() : {} { ruleNameDef() figureGroupObject() ( range() | singleValueSet() ) ( comment() | userData() )* } void number() : {} { ( numberValue() | numberDisplay() | number() )* } void numberDefinition() : {} { ( scale() | gridMap() | comment() )* } void numberDisplay() : {} { numberValue() ( display() )* } /* there is a more detailed productions in level 1 void numberValue() : {} { scaledInteger() } */ void offPageConnector() : {} { portNameDef() ( unused() | property() | comment() | userData() )* } void offsetEvent() : {} { event() numberValue() } void openShape() : {} { curve() ( property() )* } void orientation() : {} { ( | | | | | | | ) } void origin() : {} { pointValue() } void overhangDistance() : {} { ruleNameDef() figureGroupObject() figureGroupObject() ( range() | singleValueSet() ) ( comment() | userData() )* } void overlapDistance() : {} { ruleNameDef() figureGroupObject() figureGroupObject() ( range() | singleValueSet() ) ( comment() | userData() )* } void oversize() : {} { integerValue() ( figureGroupRef() | figureOp() ) cornerType() } void owner() : {} { } /* there is a more detailed productions in level 1 void page() : {} { instanceNameDef() ( instance() | net() | netBundle() | commentGraphics() | portImplementation() | pageSize() | boundingBox() | comment() | userData() )* } */ void pageSize() : {} { rectangle() } void parameter() : {} { valueNameDef() typedValue() [ unit() ] } void parameterAssign() : {} { valueNameRef() typedValue() } void parameterDisplay() : {} { valueNameRef() ( display() )* } void path() : {} { pointList() ( property() )* } void pathDelay() : {} { delay() ( event() )* } void pathWidth() : {} { integerValue() } void permutable() : {} { ( portRef() | permutable() | nonPermutable() )* } void physicalDesignRule() : {} { ( figureWidth() | figureArea() | rectangleSize() | figurePerimeter() | overlapDistance() | overhangDistance() | enclosureDistance() | interFigureGroupSpacing() | intraFigureGroupSpacing() | notchSpacing() | notAllowed() | figureGroup() | comment() | userData() )* } void plug() : {} { ( socketSet() )* } void point() : {} { ( pointValue() | pointDisplay() | point() )* } void pointDisplay() : {} { pointValue() ( display() )* } void pointList() : {} { ( pointValue() )* } /* there is a more detailed productions in level 1 void pointValue() : {} { pt() } */ void polygon() : {} { pointList() ( property() )* } void port() : {} { portNameDef() ( direction() | unused() | designator() | dcFaninLoad() | dcFanoutLoad() | dcMaxFanin() | acLoad() | portDelay() | property() | comment() | userData() )* } void portBackAnnotate() : {} { portRef() ( designator() | dcFaninLoad() | dcFanoutLoad() | dcMaxFanin() | dcMaxFanout() | acLoad() | portDelay() | property() | comment() )* } void portBundle() : {} { portNameDef() listOfPorts() ( property() | comment() | userData() )* } void portDelay() : {} { derivation() ( delay() | loadDelay() ) ( transition() | becomes() )* } void portGroup() : {} { ( portNameRef() | portRef() )* } void portImplementation() : {} { ( portNameRef() | portRef() ) ( connectLocation() | figure() | instance() | commentGraphics() | propertyDisplay() | keywordDisplay() | property() | comment() | userData() )* } void portInstance() : {} { ( portNameRef() | portRef() ) ( unused() | designator() | dcFaninLoad() | dcFanoutLoad() | dcMaxFanin() | acLoad() | portDelay() | property() | comment() | userData() )* } void portList() : {} { ( portNameRef() | portRef() )* } void portListAlias() : {} { portNameDef() portList() } void portMap() : {} { ( portRef() | portGroup() | comment() | userData() )* } void portNameDef() : {} { nameDef() | array() } void portNameRef() : {} { nameRef() | member() } void portRef() : {} { portNameRef() [ portRef() | instanceRef() | viewRef() ] } void program() : {} { [ version() ] } void property() : {} { propertyNameDef() typedValue() ( owner() | unit() | property() | comment() )* } void propertyDisplay() : {} { propertyNameRef() ( display() )* } void propertyNameDef() : {} { nameDef() } void propertyNameRef() : {} { nameRef() } void protectionFrame() : {} { ( portImplementation() | figure() | instance() | commentGraphics() | boundingBox() | propertyDisplay() | keywordDisplay() | parameterDisplay() | property() | comment() | userData() )* } void pt() : {} { integerValue() integerValue() } void range() : {} { atLeast() | atMost() | between() | exactly() | greaterThan() | lessThan() } void rangeVector() : {} { ( range() | singleValueSet() )* } void rectangle() : {} { pointValue() pointValue() ( property() )* } void rectangleSize() : {} { ruleNameDef() figureGroupObject() ( rangeVector() | multipleValueSet() ) ( comment() | userData() )* } void rename() : {} { ( ident() | name() ) ( | stringDisplay() ) } void resolves() : {} { ( logicNameRef() )* } void ruleNameDef() : {} { nameDef() } void scale() : {} { numberValue() numberValue() unit() } void scaledInteger() : {} { | e() } void scaleX() : {} { integerValue() integerValue() } void scaleY() : {} { integerValue() integerValue() } void section() : {} {
stringValue() ( stringValue() | section() | instance() )* } void shape() : {} { curve() ( property() )* } void simulate() : {} { simulateNameDef() ( portListAlias() | waveValue() | apply() | comment() | userData() )* } void simulateNameDef() : {} { nameDef() } void simulationInfo() : {} { ( logicValue() | comment() | userData() )* } void singleValueSet() : {} { ( range() )* } void site() : {} { viewRef() [ transform() ] } void socket() : {} { [ symmetry() ] } void socketSet() : {} { symmetry() ( site() )* } void status() : {} { ( written() | comment() | userData() )* } void steady() : {} { ( portNameRef() | portRef() | portList() ) duration() [ transition() | becomes() ] } void string() : {} { ( stringValue() | stringDisplay() | string() )* } void stringDisplay() : {} { stringValue() ( display() )* } /* there is a more detailed productions in level 1 void stringValue() : {} { } */ void strong() : {} { logicNameRef() } void symbol() : {} { ( portImplementation() | figure() | annotate() | instance() | commentGraphics() | pageSize() | boundingBox() | propertyDisplay() | keywordDisplay() | parameterDisplay() | property() | comment() | userData() )* } void symmetry() : {} { ( transform() )* } void table() : {} { ( entry() | tableDefault() )* } void tableDefault() : {} { ( logicRef() | portRef() | noChange() | table() ) [ delay() | loadDelay() ] } /* there is a more detailed productions in level 1 void technology() : {} { numberDefinition() ( figureGroup() | fabricate() | simulationInfo() | physicalDesignRule() | comment() | userData() )* } */ void textHeight() : {} { integerValue() } void timeInterval() : {} { ( event() | offsetEvent() ) ( event() | offsetEvent() | duration() ) } void timeStamp() : {} { } void timing() : {} { derivation() ( pathDelay() | forbiddenEvent() | comment() | userData() )* } void transform() : {} { [ scaleX() ] [ scaleY() ] [ delta() ] [ orientation() ] [ origin() ] } void transition() : {} { ( logicNameRef() | logicList() | logicOneOf() ) ( logicNameRef() | logicList() | logicOneOf() ) } void trigger() : {} { ( change() | steady() | initial() )* } void myTrue() : {} { } void typedValue() : {} { myBoolean() | integer() | miNoMax() | number() | point() | string() } void unconstrained() : {} { } void undefined() : {} { } void union() : {} { ( figureGroupRef() | figureOp() ) ( figureGroupRef() | figureOp() )* } void unit() : {} { ( | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | } void increasing() : {} { "(" "increasing" numberValue() ( numberValue() )* ")" } void integerValue() : {} { | valueNameRef() | floor() | ceiling() | fix() | mod() | xCoord() | yCoord() | abs() | max() | min() | negate() | product() | subtract() | sum() } void myInterface() : {} { "(" "interface" ( port() | portBundle() | symbol() | protectionFrame() | arrayRelatedInfo() | parameter() | joined() | mustJoin() | weakJoined() | permutable() | timing() | simulate() | designator() | constant() | constraint() | variable() | property() | comment() | userData() )* ")" } void max() : {} { "(" "max" numberValue() ( numberValue() )* ")" } void min() : {} { "(" "min" numberValue() ( numberValue() )* ")" } void miNoMaxValue() : {} { numberValue() | mnm() } void mod() : {} { "(" "mod" integerValue() integerValue() ")" } void negate() : {} { "(" "negate" numberValue() ")" } void not() : {} { "(" "not" booleanValue() ")" } void numberValue() : {} { scaledInteger() | valueNameRef() | floor() | ceiling() | fix() | mod() | xCoord() | yCoord() | abs() | max() | min() | negate() | product() | subtract() | sum() } void or() : {} { "(" "or" ( booleanValue() )* ")" } void page() : {} { "(" "page" instanceNameDef() ( instance() | net() | netBundle() | commentGraphics() | portImplementation() | pageSize() | boundingBox() | constant() | constraint() | variable() | comment() | userData() )* ")" } void pointSubtract() : {} { "(" "pointSubtract" pointValue() ( pointValue() )* ")" } void pointSum() : {} { "(" "pointSum" ( pointValue() )* ")" } void pointValue() : {} { pt() | valueNameRef() | pointSum() | pointSubtract() } void product() : {} { "(" "product" ( numberValue() )* ")" } void strictlyIncreasing() : {} { "(" "strictlyIncreasing" numberValue() ( numberValue() )* ")" } void stringValue() : {} { | valueNameRef() | concat() } void subtract() : {} { "(" "subtract" numberValue() ( numberValue() )* ")" } void sum() : {} { "(" "sum" ( numberValue() )* ")" } void technology() : {} { "(" "technology" numberDefinition() ( figureGroup() | fabricate() | simulationInfo() | physicalDesignRule() | constant() | constraint() | comment() | userData() )* ")" } void variable() : {} { "(" "variable" valueNameDef() typedValue() ")" } void xCoord() : {} { "(" "xCoord" pointValue() ")" } void xor() : {} { "(" "xor" ( booleanValue() )* ")" } void yCoord() : {} { "(" "yCoord" pointValue() ")" }