New flag syntax

From version 2.5 onward it is possible to write flag conditions as per the following examples:

/flag1 - 3/ X --> a [means that /flag1/ is to be decremented by three units]
/flag1 + 4/ X --> a [means that /flag1/ is to be incremented by four units]

The second rule is therefore increasing flags values. It could be equivalently written:

/flag1/ X --> a /flag1 + 4/

Many other new features on flags have been implemented in version 2.5. Here is a brief survey of flag conditions taken from the on-line help under "Flags":

/myflag = 3/ X --> a checks that 'myflag' is equal to 3, and if so, makes the rule candidate.
/myflag ≠ 3/ X --> a checks that 'myflag' is unequal to 3, and if so, makes the rule candidate.
/myflag < 3/ X --> a checks that 'myflag' is smaller than 3, and if so, makes the rule candidate.
/myflag > 3/ X --> a checks that 'myflag' is greater than 3, and if so, makes the rule candidate.
/myflag ≤ 3/ X --> a checks that 'myflag' is smaller or equal to 3, and if so, makes the rule candidate.
/myflag ≥ 3/ X --> a checks that 'myflag' is greater or equal to 3, and if so, makes the rule candidate.

Be careful that '=' is the assignment operator if found in the right argument of a rule, and a comparison operator otherwise. To get '≤' (inferior or equal) on a US keyboard, type option comma, and to get '≥' (superior or equal) type option period.

A rule may now contain several flag conditions, e.g.:

/myflag ≥ 3/ /myflag < 20/ /otherflag = 4/ X --> a

In assignments and comparisons, numbers may be replaced with other flags or control parameters K1, K2, etc., e.g.:

X --> a /flag1 = K1/ /flag2 = flag1/
/flag1 > K19/ X --> b
/flag2 ≠ flag3/ X --> c

Be careful that all flags are set to zero when computation starts, unless the project is running in "Improvize" mode and "Reset rule flags" is not checked on dialog "Settings". In the latter case, flags keep the values they have acquired during the preceding computation.