public interface Communication extends Term
A CSP communication that is part of a prefixing process or action.
If the communicating channel has been declared with generic types, the communication
must carry the generic actual expressions, hence we have a RefExpr rather than
a Name. It represents the Communication grammar rule.
A communication can be either a communication for synchronisation, input, output, or mixed.
A communication can also appear in a channel set expression, in which case no fields are allowed.
Synchronisation has no fields. Input and Output has only input or output fields respectively.
Mixed communication has both input and output fields, such as c?x:P!v -> A.
The semantics of dot (c.x) and output (c!x) is equivalent. However, for some applications/tools, their evaluation can be done differently. Except for references (without generics) and numerals, expressions MUST be surrounded by parenthesis. Similarly, predicates on input prefix restrictions must also be surrounded by parenthesis.
Communications are annotated by the type checker with a CommunicationType, which includes the declared channel name/type pair, as well as the communication pattern signature. This is useful because the communication pattern type might not necessarily be the same as the type of the channel. Also, we mark the channel within the communication as a generic, indexed or normal channel.
| Modifier and Type | Method and Description |
|---|---|
RefExpr |
getChannelExpr()
Returns the ChannelExpr element.
|
CircusFieldList |
getCircusFieldList()
This is a convenience method.
|
CommPattern |
getCommPattern()
Returns the CommPattern element.
|
CommUsage |
getCommUsage()
Returns the CommUsage element.
|
FieldList |
getFieldList()
Returns the FieldList element.
|
Boolean |
getIndexed()
Returns the Indexed element.
|
BigInteger |
getMultiSych()
Returns the MultiSych element.
|
void |
setChannelExpr(RefExpr channelExpr)
Sets the ChannelExpr element.
|
void |
setCommPattern(CommPattern commPattern)
Sets the CommPattern element.
|
void |
setCommUsage(CommUsage commUsage)
Sets the CommUsage element.
|
void |
setFieldList(FieldList fieldList)
Sets the FieldList element.
|
void |
setIndexed(Boolean indexed)
Sets the Indexed element.
|
void |
setMultiSych(BigInteger multiSych)
Sets the MultiSych element.
|
RefExpr getChannelExpr()
void setChannelExpr(RefExpr channelExpr)
channelExpr - the ChannelExpr element.getChannelExpr()FieldList getFieldList()
void setFieldList(FieldList fieldList)
fieldList - the FieldList element.getFieldList()CommUsage getCommUsage()
void setCommUsage(CommUsage commUsage)
commUsage - the CommUsage element.getCommUsage()CommPattern getCommPattern()
void setCommPattern(CommPattern commPattern)
commPattern - the CommPattern element.getCommPattern()BigInteger getMultiSych()
void setMultiSych(BigInteger multiSych)
multiSych - the MultiSych element.getMultiSych()Boolean getIndexed()
void setIndexed(Boolean indexed)
indexed - the Indexed element.getIndexed()CircusFieldList getCircusFieldList()
Copyright © 2003–2016 Community Z Tools Project. All rights reserved.