Rule
A Rule defines an algorithm used to match an input buffer of ASCII characters against a set of syntactical specifications.
Each rule represents either a terminal symbol or a composition in the represented grammar.
The library comes with a set of rules for productions typically found in RFC documents.
Rules are not invoked directly; instead, rule variables are used with overloads of parse
which provide a convenient, uniform front end.
Requirements
In this table:
-
T
is a type meeting the requirements of Rule -
t
is a const value of typeT
-
it
is an lvalue with typechar const*
-
end
is a value of typechar const*
Expression | Type | Semantics, Pre/Post-conditions |
---|---|---|
|
- |
Copy construction of
|
|
- |
Values of this type are returned by the rule when the parse operation is successful |
|
|
Attempt to parse the buffer of characters defined by
the range |
Exemplar
For best results, it is suggested that all constructors for rules be marked constexpr
.
struct Rule
{
struct value_type;
constexpr Rule( Rule const& ) noexcept = default;
auto parse( char const*& it, char const* end ) const -> result< value_type >;
};
// Declare a variable of type Rule for notational convenience
constexpr Rule rule{};