The Rule  The rule is a polymorphic parser that acts as a named
place-holder capturing the behavior of an EBNF expression
assigned to it. Naming an EBNF expression allows it to be
referenced later. The rule is a template class parameterized by
the type of the scanner (ScannerT), the rule's context and its
tag. Default template parameters are provided to make it easy to
use the rule.          typename ScannerT = scanner<>,
typename ContextT = parser_context<>,         typename TagT =
parser_address_tag>     class rule;  Default template parameters
are supplied to handle the most common case. ScannerT defaults
to scanner<>, a plain vanilla scanner that acts on char const*
iterators and does nothing special at all other than iterate
through all the chars in the null terminated input a character
at a time. The rule tag, TagT, typically used with ASTs, is used
to identify a rule; it is explained here. In trivial cases,
declaring a rule as rule<> is enough. You need not be concerned
at all with the ContextT