There will be times when you have to match an empty workspace. The
$@ operator, when used in the LHS, does exactly
that. To illustrate, consider the following rule:
R $@ $#error $@ nouser $: "553 User address required"
Here, the idea is to detect an empty address (the LHS), and to reject
the message with an error (the RHS) if such an address is found. This
LHS matches a workspace (an address) that contains zero information
(zero tokens). Here, then, the $@ operator matches
an empty workspace.
The $@ operator was introduced because it is
illegal to literally put nothing on the LHS. The following rule (here
we show tabs with tab) won't
work:
Rtab$#error $@ nouser $: "553 User address required"
If you try to match an empty workspace such as this, you will get the
following error:
configfile: line number: R line: null LHS
Note that the $@ operator matches zero tokens only
when used on the LHS. When used on the RHS $@ has
a totally different meaning. Note, too, that the
$@ operator on the LHS cannot be referenced by a
$ digit operator on the
RHS.