Rule-based Row Filter

This node takes a list of user-defined rules and tries to match them
to each row in the input table. If the first matching rule has a TRUE outcome, the row will be
selected for inclusion. Otherwise (i.e. if the first matching rule yields FALSE) it will be
excluded. If no rule matches the row will be excluded.
Inclusion and exclusion may be inverted, see the options below.

Each rule is represented by a line.
To add comments, start a line with
//
(comments can not be placed in the same line as a rule). Anything after // will not be interpreted as a rule.
Rules consist of a condition part (antecedent), which must
evaluate to
true
or
false
, and an outcome (consequent, after the => symbol) which is either
TRUE
or
FALSE
.

If no rule matches, the outcome is treated as if it were
FALSE
.

Columns are given by their name surrounded by $, numbers are given
in the usual decimal representation. Note that strings must not
contain (double-)quotes (for those cases use the following syntax: /Oscar Wilde's wisdom: "Experience is simply the name we give our mistakes."/). The flow variables are
represented by
$${
TypeCharacterAndFlowVarName
}$$
.
The TypeCharacter should be 'D' for double (real) values, 'I' for
integer values and 'S' for strings.

The logical expressions can be grouped with parentheses. The
precedence rules for them are the following: NOT binds most, AND,
XOR and finally OR the least.
Comparison operators always take
precedence over logical connectives.
All operators (and their names)
are case-sensitive.

The
ROWID
represents the row key string, the
ROWINDEX
is a the index of the row (first row has
0
value), while
ROWCOUNT
stands for the number of rows in the table.

Some example rules (each should be in one line):

// This is a comment
$Col0$ > 0 => TRUE

When the values in Col0 are greater than 0, we select the row (if no
previous rule matched with FALSE outcome).