Author: Daniel Grundmann, Fraunhofer ISST.
Specification: Definition
| Definition Specification
Definition: TypeDcl ;
| ConstDcl ;
| ExceptDcl ;
| Interface ;
| Module ;
| Class ;
Class: ClassHeader { InterfaceBody }
ClassHeader: CLASS Id OptTypePropertyList
| CLASS Id EXTENDS ScopedName OptTypePropertyList
| CLASS Id : InheritanceSpec OptTypePropertyList
| CLASS Id : EXTENDS ScopedName : InheritanceSpec OptTypePropertyList
Module: MODULE Id { Specification }
Interface: InterfaceDcl
| ForwardDcl
InterfaceDcl: INTERFACE Id : InheritanceSpec { OptInterfaceBody }
| INTERFACE Id { OptInterfaceBody }
ForwardDcl: INTERFACE Id
OptInterfaceBody:
| InterfaceBody
OptTypePropertyList:
| TypePropertyList
TypePropertyList: ( OptExtentSpec OptKeySpec )
OptExtentSpec:
| ExtentSpec
ExtentSpec: EXTENT Id
OptKeySpec:
| KeySpec
KeySpec: KEY KeyList
| KEYS KeyList
KeyList: Key
| Key , KeyList
Key: PropertyName
| ( PropertyList )
PropertyList: PropertyName
| PropertyName , PropertyList
PropertyName: Id
AttributeNameList: AttributeName
| AttributeName , AttributeNameList
AttributeName: Id
InterfaceBody: Export
| Export InterfaceBody
Export: TypeDcl ;
| ConstDcl ;
| ExceptDcl ;
| AttrDcl ;
| RelDcl ;
| OpDcl ;
InheritanceSpec: ScopedName
| ScopedName , InheritanceSpec
ScopedName: Id
| :: Id
| ScopedName :: Id
ConstDcl: CONST ConstType Id = ConstExp
ConstType: IntegerType
| CharType
| BooleanType
| FloatingPtType
| StringType
| ScopedName
ConstExp: OrExpr
OrExpr: XOrExpr
| OrExpr | XOrExpr
XOrExpr: AndExpr
| XOrExpr ^ AndExpr
AndExpr: ShiftExpr
| AndExpr & ShiftExpr
ShiftExpr: AddExpr
| ShiftExpr >> AddExpr
| ShiftExpr << AddExpr
AddExpr: MultExpr
| AddExpr + MultExpr
| AddExpr - MultExpr
MultExpr: UnaryExpr
| MultExpr * UnaryExpr
| MultExpr / UnaryExpr
| MultExpr % UnaryExpr
UnaryExpr: UnaryOperator PrimaryExpr
| PrimaryExpr
UnaryOperator: -
| +
| ~
PrimaryExpr: ScopedName
| Literal
| ( ConstExp )
Literal: IntegerLiteral
| StringLiteral
| CharacterLiteral
| FloatingPtLiteral
| BooleanLiteral
BooleanLiteral: TRUE
| FALSE
PositiveIntConst: ConstExp
TypeDcl: TYPEDEF TypeDeclarator
| StructType
| UnionType
| EnumType
TypeDeclarator: TypeSpec Declarators
TypeSpec: SimpleTypeSpec
| ConstrTypeSpec
SimpleTypeSpec: BaseTypeSpec
| TemplateTypeSpec
| ScopedName
BaseTypeSpec: FloatingPtType
| IntegerType
| CharType
| BooleanType
| OctetType
| AnyType
| DATE
| TIME
| INTERVAL
| TIMESTAMP
TemplateTypeSpec: ArrayType
| StringType
| CollType
CollType: SET < SimpleTypeSpec >
| LIST < SimpleTypeSpec >
| BAG < SimpleTypeSpec >
| DICTIONARY < SimpleTypeSpec , SimpleTypeSpec >
ConstrTypeSpec: StructType
| UnionType
| EnumType
Declarators: Declarator
| Declarator , Declarators
Declarator: SimpleDeclarator
| ComplexDeclarator
SimpleDeclarator: Id
ComplexDeclarator: ArrayDeclarator
FloatingPtType: FLOAT
| DOUBLE
IntegerType: SignedInt
| UnsignedInt
SignedInt: SignedLongInt
| SignedShortInt
SignedLongInt: LONG
SignedShortInt: SHORT
UnsignedInt: UnsignedLongInt
| UnsignedShortInt
UnsignedLongInt: UNSIGNED LONG
UnsignedShortInt: UNSIGNED SHORT
CharType: CHAR
BooleanType: BOOLEAN
OctetType: OCTET
AnyType: ANY
StructType: STRUCT Id { MemberList }
MemberList: Member
| Member MemberList
Member: TypeSpec Declarators ;
UnionType: UNION Id SWITCH ( SwitchTypeSpec ) { SwitchBody }
SwitchTypeSpec: IntegerType
| CharType
| BooleanType
| EnumType
| ScopedName
SwitchBody: Case
| Case SwitchBody
Case: CaseLabelList ElementSpec ;
CaseLabelList: CaseLabel
| CaseLabel CaseLabelList
CaseLabel: CASE ConstExp :
| DEFAULT :
ElementSpec: TypeSpec Declarator
EnumType: ENUM Id { EnumeratorList }
EnumeratorList: Enumerator
| Enumerator , EnumeratorList
Enumerator: Id
ArrayType: ARRAY < SimpleTypeSpec , PositiveIntConst >
| SEQUENCE < SimpleTypeSpec , PositiveIntConst >
| ARRAY < SimpleTypeSpec >
| SEQUENCE < SimpleTypeSpec >
StringType: STRING < PositiveIntConst >
| STRING
ArrayDeclarator: Id ArraySizeList
ArraySizeList: FixedArraySize
| FixedArraySize ArraySizeList
FixedArraySize: LEPAR PositiveIntConst REPAR
AttrDcl: READONLY ATTRIBUTE DomainType FixedArraySize AttributeNameList
| ATTRIBUTE DomainType FixedArraySize AttributeNameList
| READONLY ATTRIBUTE DomainType AttributeNameList
| ATTRIBUTE DomainType AttributeNameList
DomainType: SimpleTypeSpec
| StructType
| EnumType
| SET < Literal >
| LIST < Literal >
| BAG < Literal >
RelDcl: RELATIONSHIP TargetOfPath TraversalPathName1 OptInverseTraversalPath
TraversalPathName1: Id
TargetOfPath: Id
| RelCollectionType < Id >
OptInverseTraversalPath:
| INVERSE Id :: TraversalPathName2
TraversalPathName2: Id
AttributeList: ScopedName
| ScopedName , AttributeList
RelCollectionType: SET
| LIST
| BAG
ExceptDcl: EXCEPTION Id { OptMemberList }
OptMemberList:
| MemberList
OpDcl: OpAttribute OpTypeSpec Id ParameterDcls RaisesExpr ContextExpr
| OpTypeSpec Id ParameterDcls RaisesExpr ContextExpr
| OpAttribute OpTypeSpec Id ParameterDcls ContextExpr
| OpAttribute OpTypeSpec Id ParameterDcls RaisesExpr
| OpTypeSpec Id ParameterDcls ContextExpr
| OpAttribute OpTypeSpec Id ParameterDcls
| OpTypeSpec Id ParameterDcls RaisesExpr
| OpTypeSpec Id ParameterDcls
OpAttribute: ONEWAY
OpTypeSpec: SimpleTypeSpec
| VOID
ParameterDcls: ( ParamDclList )
| ( )
ParamDclList: ParamDcl
| ParamDcl , ParamDclList
ParamDcl: ParamAttribute SimpleTypeSpec Declarator
ParamAttribute: IN
| OUT
| INOUT
RaisesExpr: RAISES ( ScopedNameList )
ScopedNameList: ScopedName
| ScopedName , ScopedNameList
ContextExpr: CONTEXT ( StringLiteralList )
StringLiteralList: StringLiteral
| StringLiteral , StringLiteralList
Last modified: 1/20/99 by Leonidas Fegaras