CompilationUnit: ModuleStatement ( ; ModuleStatement)*

ModuleStatement: Reference | ChildrenCedar | CellConstructor | Def

Reference: (Directory | Open | Imports | Library) IDList

IDList: ID ( , ID)*

ChildrenCedar: CEDAR <children:> CedarDeclarationSeries CedarStatementSeries

Def: IDList : CellFnConstructor

CellFnConstructor: LAMBDA Parameters RETURN CellConstructor [HowToApply]

Parameters: [ Parameter (, Parameter)* ]

Parameter: IDList : CedarLiteral--denoting type--

CedarLiteral:

CellConstructor: CELLTYPE NameDescription CellStatement* ENDCELLTYPE

NameDescription: RopeLiteral | NameProc | AutoName

NameProc: NameMaker <children:> CedarDeclarationSeries CedarStatementSeries

CellStatement: InterfaceDescription | StateType | Initializer | Expansion | Tester | Behavior | RecordHelp | Other | InitCTProps

InterfaceDescription: SimpleInterface | InterfaceProc

SimpleInterface: PORTS [ [Port (, Port)*] ]

Port: IDList DirectionFlag NodeTypeConstructor Note*

DirectionFlag: < | = | >

Note: - Assertion

Assertion: ( ID RefAny* )

RefAny:

NodeTypeConstructor: ID [[ [ArgList] ]]

ArgList: Arg ( , Arg)*

Arg: [ IDList : ] ( ID | CedarRopeLiteral | CedarNumber | CedarLiteral )

CedarNumber:

InterfaceProc: PortsProc <children:> CedarDeclarationSeries CedarStatementSeries

StateType: (State | InittableState) <children:> CedarVariantFieldList


RecordHelp: (IOAux | StateAux | DriveAux) (RefType | RecType | InitialValue) (ID | CedarLiteral)

Initializer: Initializer <children:> CedarDeclarationSeries CedarStatementSeries

Tester: Test TesterName TesterType <children:> CedarDeclarationSeries CedarStatementSeries

TesterName: ID

TesterType: BlackBox | StateToo

Behavior: EvalName <children:> CedarDeclarationSeries CedarStatementSeries

EvalName: ValsChanged | InitQ | PropQ | InitUD | PropUD | FinalUD | EvalSimple | FindVicinity

Expansion: Expand ExpansionStatement ( ; ExpansionStatement)*

ExpansionStatement: NodeInstantiation | CellInstantiation | ChildrenCedar

NodeInstantiation: IDList : NodeTypeConstructor Note* [InitialValue] [InitialData]

InitialValue: _v (RopeLiteral | CedarLiteral) [fmt RopeLiteral]

InitialData: _d CedarLiteral

CellInstantiation: IDList : CellInstanceConstructor Note*

CellInstanceConstructor: CellTypeExpr [[ [ArgList] ]]

CellTypeExpr: ID [ [ ArgList ] ]

Other: Assert AssertionList

AssertionList: ( Assertion* )

InitCTProps: InitCTProps <children:> CedarDeclarationSeries CedarStatementSeries

HowToApply: ApplyCode <children:> CedarDeclarationSeries CedarStatementSeries

Here are some assertions that can be made about ports:

(XPhobic)
(XPhillic)
Says whether or not Xes may cross the port.  Only meaningful on switch-level ports.  Default is XPhobic.

(Special)
(General)
Again only meaningful on switch-level ports.  Says whether the general or special protocol is used.  Default is general.

(EC relation:ID class:ID)
Specifies which equivalence class (as defined by the given relation) the port belongs to.

Here are some assertions that can be made about node instantiations:

(XPhobic)
(XPhillic)
Says whether or not the node may be in an X state.  Only meaningful on switch-level nodes.  Default is XPhobic.

Here are some assertions that can be made about cell types:

(EC relation:ID class:ID)
Specifies which equivalence class (as defined by the given relation) the cell type belongs to.
���„��RoseGrammar.Tioga
Last Edited by: Spreitzer, January 25, 1985 2:50:30 pm PST

Terminals are in bold face; syntactic categories and meta-characters are plain.
Syntactic categories whose names begin with "Cedar" are from the Cedar language, unless otherwise noted.
All of the References must come before any of the others.
A Cedar expression surrounded by vertical bars (double to include).
Example: |"This is a text literal with a '||' (single vertical bar) in it"|
This code should compute the name of the CellType.  This code will go in a PROC [...] RETURNS [name: ROPE].
For all the random things up with which we do not want to garbage the syntax.
Something parseable by IO.GetRefAny.
An integer (expressed in decimal, octal, or hex) or real number literal, expressed as in Cedar.
This code should compute the RoseTypes.Ports describing the cell type's interface.  This code will go in a PROC [...] RETURNS [ports: Ports].
InitialStateValue: InitialStateValue CedarLiteral

IOCreator: IOCreator <children:> CedarDeclarationSeries CedarStatementSeries

IORefType: IORefTypeName ID

InitialDriveValue: InitialDriveValue CedarLiteral
This code computes an initial assertion list for the cell type.  This code will go in a PROC [...] RETURNS [other: Asserting.Assertions].
This code should compute the RoseTypes.CellType describing the cell type.  This code will go in a PROC [...] RETURNS [ct: CellType].
�Ê��–
"cedar" style˜�Icode™J™:J™�JšœÏbœ:™OJ™hK˜�Kšœ#œ˜6K˜�šœB˜BK™9—K˜�Kš	œ	œœœœ˜8K˜�Kšœ
œ˜K˜�Kšœœ8˜LK˜�Kšœœ˜K˜�Kšœœœ˜HK˜�Kšœœœ
˜(K˜�Kšœœ
Ïc˜1K˜�˜
K™CK™K—K˜�Kšœœ ˜DK˜�Kšœ*˜2K˜�šœ
	œ8˜KK™k—K˜�Kšœ€˜€K˜�Kšœ5˜5K˜�Kšœœœœ	˜+K˜�Kšœ4˜4K˜�Kšœœœ˜K˜�šœœ
˜K™M—K˜�Kšœœ˜K˜�šœ˜K™$—K˜�Kšœœœ˜'K˜�Kšœœ˜K˜�Kšœœ9˜HK˜�šœ˜K™_—K˜�šœ	œ8˜PK™—K˜�Kšœœœ#˜EK˜�Kšœœ
™1K™�Kšœ	œ8™LK™�Kšœ
œ™K™�Kšœœ
™1K˜�Kš
œ
œœœœœœ˜`K˜�Kšœ
œ8˜PK˜�KšœœN˜ZK˜�Kšœ˜K˜�Kšœœ˜K˜�KšœJ˜JK˜�Kšœ
œœœœœœ
œ˜]K˜�Kšœœœ˜=K˜�KšœI˜IK˜�Kšœœ7˜RK˜�Kšœœœ
˜?K˜�Kšœ
œ
˜K˜�Kšœœ˜9K˜�Kšœ'œœ˜5K˜�Kšœœ	œ˜ K˜�Kšœœ˜K˜�Kšœœ˜K˜�šœ
œ8˜PK™‰—K˜�šœ	œ8˜MK™„—K˜�block˜6L˜�Kš	˜	š
˜
L˜h—L˜�Kš	˜	š	˜	L˜x—L˜�šœÏi	œŸ˜L˜Y——L˜�˜DL˜�Kš	˜	š
˜
L˜o——L˜�˜;L˜�šœŸ	œŸ˜L˜^———�…—����
0��º��