The supported operators are arithmetic operators (addition, subtraction, multiplication, division and modulus), logical operators, string operators and field operators.
Arithmetic operators for addition (+
), subtraction (-
),
multiplication (*
), integer division (/
) and modulus
(%
) are supported with their usual meanings.
These operators require either numeric operands or string operands whose value can be interpreted as numbers (integer or real).
The boolean operators and (&&
), or
(||
) and not (!
) are supported with the same
semantics as their C counterparts.
A compound boolean operator =>
is also supported in order to
ease the elaboration of constraints in records: A => B
, which
can be read as “A implies B”, translates into !A || (A && B)
.
The boolean operators expect integer operands, and will try to convert any string operand to an integer value.
The compare operators less than (<
), greater
than (>
), less than or equal (<=
),
greater than or equal (>=
), equal (=
)
and unequal (!=
) are supported with their usual
meaning.
Strings can be compared with the equality operator (=
).
The match operator (~
) can be used to match a string with a
given regular expression (see Regular Expressions).
The compare operators before (<<
), after
(>>
) and same time (==
) can be used with fields
and strings containing parseable dates.
See Date input formats.
Field counters are replaced by the number of occurrences of a field with the given name in the record. For example:
The previous expression is replaced with the number of fields named
Email
in the record. It can be zero if the record does not
have a field with that name.
The string concatenation operator (&
) can be used to
concatenate any number of strings and field values.
'foo' & Name & 'bar'
The ternary conditional operator can be used to select alternatives based on the value of some expression:
expr1 ? expr2 : expr3
If expr1
evaluates to true (i.e. it is an integer or the string
representation of an integer and its value is not zero) then the
operator yields expr2
. Otherwise it yields expr3
.