CLEM operators

This page lists the available CLEM language operators.

Table 1. CLEM language operators
Operation Comments Precedence (see next section)
or Used between two CLEM expressions. Returns a value of true if either is true or if both are true. 10
and Used between two CLEM expressions. Returns a value of true if both are true. 9
= Used between any two comparable items. Returns true if ITEM1 is equal to ITEM2. 7
== Identical to =. 7
/= Used between any two comparable items. Returns true if ITEM1 is not equal to ITEM2. 7
/== Identical to /=. 7
> Used between any two comparable items. Returns true if ITEM1 is strictly greater than ITEM2. 6
>= Used between any two comparable items. Returns true if ITEM1 is greater than or equal to ITEM2. 6
< Used between any two comparable items. Returns true if ITEM1 is strictly less than ITEM2 6
<= Used between any two comparable items. Returns true if ITEM1 is less than or equal to ITEM2. 6
&&=_0 Used between two integers. Equivalent to the Boolean expression INT1 && INT2 = 0. 6
&&/=_0 Used between two integers. Equivalent to the Boolean expression INT1 && INT2 /= 0. 6
+ Adds two numbers: NUM1 + NUM2. 5
>< Concatenates two strings; for example, STRING1 >< STRING2. 5
- Subtracts one number from another: NUM1 - NUM2. Can also be used in front of a number: - NUM. 5
* Used to multiply two numbers: NUM1 * NUM2. 4
&& Used between two integers. The result is the bitwise 'and' of the integers INT1 and INT2. 4
&&~~ Used between two integers. The result is the bitwise 'and' of INT1 and the bitwise complement of INT2. 4
|| Used between two integers. The result is the bitwise 'inclusive or' of INT1 and INT2. 4
~~ Used in front of an integer. Produces the bitwise complement of INT. 4
||/& Used between two integers. The result is the bitwise 'exclusive or' of INT1 and INT2. 4
INT1 << N Used between two integers. Produces the bit pattern of INT shifted left by N positions. 4
INT1 >> N Used between two integers. Produces the bit pattern of INT shifted right by N positions. 4
/ Used to divide one number by another: NUM1 / NUM2. 4
** Used between two numbers: BASE ** POWER. Returns BASE raised to the power POWER. 3
rem Used between two integers: INT1 rem INT2. Returns the remainder, INT1 - (INT1 div INT2) * INT2. 2
div Used between two integers: INT1 div INT2. Performs integer division. 2

Operator precedence

Precedences determine the parsing of complex expressions, especially unbracketed expressions with more than one infix operator. For example,

3 + 4 * 5 

parses as 3 + (4 * 5) rather than (3 + 4) * 5 because the relative precedences dictate that * is to be parsed before +. Every operator in the CLEM language has a precedence value associated with it; the smaller this value, the more important it is on the parsing list, meaning that it will be processed sooner than other operators with larger precedence values.