To save the trouble of having to add boolean values and operators over them,
create the construct if0 using the syntax described by the EBNF below.
Note that if0 has three branches:
- A test expression
- A "then" expression, which evaluates if the test expression evaluates to zero
- An "else" expression, which evaluates for any other number.
Evaluation should signal an error for non-numeric test values.
To be clear: we are not introducing booleans into our language. An expression is true if the condition equals zero, and false otherwise.