Check out the new USENIX Web site. next up previous
Next: About this document ... Up: IBDL: A Language for Previous: Bibliography

Appendix

Following is BNF syntax for IBDL. Keywords are given boldface. { ... } represents zero or more elements and optional elements are given within [ ... ] .

specification_module ::=
specification module_name ``{''
{ interface_declaration
| exception_declaration }
``}''

interface_declaration ::=
interface interface_name semantics ``{''
{ message_declaration }
``}''

exception_declaration ::=
exception exception_name ``{''
{ variable_declaration ``;'' }
``}''

variable_declaration ::= type_name variable_name

type_name ::=
boolean
| char | int | String | void | interface_name

message_declaration ::=
type_name message_name
``('' [ param_list ] ``)''
[ exception_specification ]
{ ``{'' behavior_specification ``}''
| ``;'' }

param_list ::=
variable_declaration { ``,'' variable_declaration }

exception_specification ::= raises ``('' exception_list ``)''

exception_list ::=
exception_name { ``,'' exception_name }

behavior_specification ::=
{ ( normal
| abnormal )
[ defined by expression ]
{ ( enables_clause
| disables_clause ) }
[ interpretations ]
}

enables_clause ::=
enables { message [ if expression ] }

disables_clause ::=
disables { message [ if expression ] }

interpretations ::=
interpretations { message ``='' expression
[ if expression ] }

message ::=
[ expression ``.''] message_name
``('' [ actual_param_list ] ``)''

actual_param_list ::= expression { ``,'' expression }

expression ::= message
| binary_expression
| unary_expression
| sequence_expression
| variable_name
| raised_expression

binary_expression ::=
expression binary_op expression

binary_op ::=
``.''
| ``+'' | ``-'' | ``/'' | ``<'' | ``>'' | ``<='' | ``>=''
| and | or

unary_expression ::= unary_op expression

unary_op ::= ``-''
| not | ``@''

sequence_expression ::=
enabled "(" message ")"
| ``#'' ``('' message_name ``)''
| param ``('' expression ``,'' expression ``,'' expression ``)''

raised_expression ::= raised "(" exception_name ")"


next up previous
Next: About this document ... Up: IBDL: A Language for Previous: Bibliography
Sreenivas Viswanadha
1998-03-17