Customization
For a wide range of applications the library’s container interfaces are sufficient for URLs using the generic syntax or the well known schemes. There are however more complex cases where it is desired to go beyond what the library offers:
-
Create new custom containers for other schemes
-
Incorporate the parsing of URLs in an enclosing grammar
-
Parse rfc3986 elements in non-URL contexts (
authority_view
is an example of this). -
Define new ABNF rules used to parse non-URL strings
To enable these use-cases, the library provides a suite of general facilities for processing low-ASCII character strings, and makes public the interface to useful rules found in rfc3986. The design goals of these facilities are:
-
No use of
std::locale
orstd::char_traits
-
No exotic character types, just low-ASCII
char
-
No memory allocation (or bounded allocation)
-
Flexible composition with non-terminal rules
-
Optimized for the grammars commonly found in RFCs
-
Easily extended by downstream consumers
The general facilities are nested in the fully qualified namespace
boost::urls::grammar
, while the headers for rfc3986-specific parsing
algorithms are located in the <boost/url/rfc/>
include directory.
This section explains the design and use of the general facilities
to define and parse new grammars.
Syntax Notation
The documentation and reference for this library use the Augmented Backus-Naur Form (ABNF) notation throughout to specify grammar rules. An understanding of this notation is necessary to achieve best results for learning how to use the custom parsing features.
Code samples and identifiers in this customization section are written as if the following declarations are in effect:
|