Within free type paragraphs, injections are traditionally written
using and brackets.
The name of an injection can be a functional operator.
CADiZ permits such injections to be written using
the mixfix syntax of an application.
For example (ignoring overloading of existing Z symbols)...
|function 103 (_ N)|
|function 101 leftassoc (_ + _)|
|function 101 leftassoc (_ - _)|
|function 102 leftassoc (_ * _)|
|function 102 leftassoc (_ / _)|
|term ::= N|
| | + |
| | - |
| | * |
| | / |
The effect of this on the concrete syntax is to redefine Branch as follows,
where the second production covers both the new syntax of injections
and the old syntax of elements.
|Branch || = || DeclName , , Expression , |
| || | || Expression|
| || ; |