onfilter is a left clause and a right clause with the word
onbetween them. Each of the clauses must be set filters.
on-filter := left-clause 'on' right-clause left-clause := set-filter right-clause := set-filterThe set associated with an
onfilter in a position is the intersection of the sets associated with its left clause and right clause in that position. For example,
B on between (A A)matches any square in a position that has white Bishop on it between two white pieces. The left clause of the on filter is
Bwhich is a piece designator filter and is associated with the set of squares that has a white Bishop on it. The right clause is
between (A A)which is a between filter and is associated with the set of squares between two white pieces.
on filters may be chained:
B on between (A A) on attack (a A)will match the set of squares in a position that has a white Bishop on it between two white pieces and that is attacked by a black piece. This is technically a single
onfilter whose left clause is the piece designator filter
Band whose right clause is the
onfilter whose left clause is the
between (A A)and whose right clause is the
attack (a A).Examples