| 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 |