process | ::= | full-name ( expr-list ) |
| | reply expr-list [ to name ] | |
| | ||
| | process | process | |
| | expr ; process | |
| | if expr then { process } [ else { process }] | |
| | decl in process | |
| | { process } | |
expr | ::= | constant |
| | full-name | |
| | full-name ( expr-list ) | |
| | expr full-infix-name expr | |
| | expr ; expr | |
| | spawn { process } | |
| | if expr then expr [ else expr ] | |
| | decl in expr | |
| | ( expr ) | |
expr-list | ::= | [ expr { , expr } ] |
decl | ::= | let process-decl |
| | let expr-decl | |
| | loc agent-decl end | |
process-decl | ::= | join-pattern = process { and join-pattern = process } |
expr-decl | ::= | name { , name } = expr { and name { , name } = expr } |
agent-decl | ::= | agent { and agent } |
agent | ::= | ident [ with process-decl ] [ init process ] |
Construction or operator | Associativity |
!... #... $... ``.''... ~... | left |
^...@... | right |
*.../...%... | left |
+...-... | left |
<...>...=... | -- |
|...&... | left |
if | -- |
, | left |
; | left |
| | right |
let loc | -- |
Operator | Initial meaning |
+ | Integer addition. |
- | Integer subtraction. |
* | Integer multiplication. |
/ | Integer division. Crashes the system if the second argument is zero. The result is unspecified if either argument is negative. |
% | Integer modulus. Crashes the system if the second argument is zero. The result is unspecified if either argument is negative. |
^ | String concatenation. |
= | Structural equality test. |
<> | Structural inequality test. |
< | Test ``less than''. |
<= | Test ``less than or equal''. |
> | Test ``greater than''. |
>= | Test ``greater than or equal'' |
|| | Boolean disjunction |
&& | Boolean conjunction |
not | Boolean negation |