By default, all OmniMark rules are active all the time. You can activate and deactivate rules selectively by
bundling your rules into groups. You can then selectively activate and deactivate the groups:
group mary find "lamb" ... find "school" ... group tom find "piper" ... find "pig" ... group #implied process using group mary submit "Mary had a little lamb" using group tom submit "Tom, Tom, the piper's son"
In this program, only rules in the group mary are used to process input
Mary had a little
lamb. Only rules in the group tom are used to process
Tom, Tom, the piper's
group #implied before the
process rule? The
process rule is a rule
like any other, so it is affected by groups like any other rule.
group #implied stands for the
default group. (In a program with no groups, all rules are in the default group.) Only the default group is active
when a program starts. All other groups are inactive. So, you have to have at least one rule in the default group
in order to activate any of the other groups.
Any rule that occurs before the first group statement in your program automatically belongs to the default group,
but, if you use groups, it is usually a good idea to place your global rules explicitly into group #implied. If
you included a file that contains group statements and you don't explicitly assign your global rules to group
#implied, your global rules will fall into the last group declared in the include file rather then the default
group. (For this reason, it is a good idea, in any include file that uses groups, to end the file with the
You cannot disable the default group, so rules in the default group are always active. For this reason, you may want to keep the number of rules in the default group to a minimum (but remember, you must have at least one).
You have more than one group active at a time by connecting the group names with
using group mary & tom & dick & harry
You can also add a group to the current set of active groups using
#group to represent all active
using group mary & tom & #group
Groups can also be changed by using a
next group is command. The difference between
next group is is that the group or groups named in the
are active for the duration of the specified execution scope, whereas those named in a
next group is remain active indefinitely or until the end of a wrapping