Next: Namespaces, Previous: Components, Up: Dezyne Language Reference [Contents][Index]
A system
component, or system
is a component which is
composed from one or more sub components. The system
block
instantiates each of the sub components and either connects their ports
together or exposes them as its own, such that all ports are bound.
system-component ::= "component" "{" port* system "}" system ::= "system" "{" system-statement* "}" system-statement ::= (instance | binding) instance ::= component-name identifier ";" binding ::= end-point "<=>" end-point ";" end-point ::= port-name | wildcard | (instance-name "." port-name) | (instance-name "." wildcard) wildcard ::= "*"
Note: A binding can have only one
wildcard
, See Using Injection.
For example:
interface i { in void event(); behavior {} } component c { provides i pp; requires i rr; } component top_middle_bottom { provides i p; requires i r; system { c top; c middle; c bottom; p <=> top.pp; top.rr <=> middle.pp; middle.rr <=> bottom.pp; bottom.rr <=> r; } }
The system description shows the instantiation of the two component
instances ci1
and ic2
and two connections or bindings
between ports.