RESTinio
|
Namespaces | |
namespace | impl |
Classes | |
class | digits_to_consume_t |
Limits for number of digits to be extracted during parsing of decimal numbers. More... | |
struct | nothing_t |
A special type to be used in the case where there is no need to store produced value. More... | |
class | parse_error_t |
Information about parsing error. More... | |
struct | result_value_wrapper |
A template with specializations for different kind of result values and for type nothing . More... | |
struct | result_value_wrapper< nothing_t > |
struct | result_value_wrapper< std::array< T, S > > |
struct | result_value_wrapper< std::basic_string< Char, Args... > > |
struct | result_value_wrapper< std::map< K, V, Args... > > |
struct | result_value_wrapper< std::vector< T, Args... > > |
struct | result_wrapper_for |
A metafunction for detection of actual result_value_wrapper type for T. More... | |
struct | result_wrapper_for< impl::std_array_wrapper< T, S > > |
A specialization of result_wrapper_for metafunction for the case of std::array wrapper. More... | |
Typedefs | |
template<typename T > | |
using | result_wrapper_for_t = typename result_wrapper_for< T >::type |
Enumerations | |
enum class | error_reason_t { unexpected_character , unexpected_eof , no_appropriate_alternative , pattern_not_found , unconsumed_input , illegal_value_found , force_only_this_alternative_failed } |
Reason of parsing error. More... | |
Functions | |
RESTINIO_NODISCARD constexpr digits_to_consume_t | expected_digits (digits_to_consume_t::underlying_int_t total) noexcept |
Create a limit for number of digits to be extracted. More... | |
RESTINIO_NODISCARD constexpr digits_to_consume_t | expected_digits (digits_to_consume_t::underlying_int_t min, digits_to_consume_t::underlying_int_t max) noexcept |
Create a limit for number of digits to be extracted. More... | |
template<typename Target_Type , typename... Clauses> | |
RESTINIO_NODISCARD auto | produce (Clauses &&... clauses) |
A factory function to create a producer that creates an instance of the target type by using specified clauses. More... | |
template<typename... Clauses> | |
RESTINIO_NODISCARD auto | alternatives (Clauses &&... clauses) |
A factory function to create an alternatives clause. More... | |
template<typename... Clauses> | |
RESTINIO_NODISCARD auto | maybe (Clauses &&... clauses) |
A factory function to create an optional clause. More... | |
template<typename... Clauses> | |
RESTINIO_NODISCARD auto | not_clause (Clauses &&... clauses) |
A factory function to create a not_clause. More... | |
template<typename... Clauses> | |
RESTINIO_NODISCARD auto | and_clause (Clauses &&... clauses) |
A factory function to create an and_clause. More... | |
template<typename... Clauses> | |
RESTINIO_NODISCARD auto | sequence (Clauses &&... clauses) |
A factory function to create a sequence of subclauses. More... | |
template<typename... Clauses> | |
RESTINIO_NODISCARD auto | force_only_this_alternative (Clauses &&... clauses) |
An alternative that should be parsed correctly or the parsing of the whole alternatives clause should fail. More... | |
template<typename... Clauses> | |
RESTINIO_NODISCARD auto | repeat (std::size_t min_occurences, std::size_t max_occurences, Clauses &&... clauses) |
A factory function to create repetitor of subclauses. More... | |
RESTINIO_NODISCARD auto | skip () noexcept |
A factory function to create a skip_consumer. More... | |
RESTINIO_NODISCARD auto | any_symbol_p () noexcept |
A factory function to create an any_symbol_producer. More... | |
RESTINIO_NODISCARD auto | symbol_p (char expected) noexcept |
A factory function to create a symbol_producer. More... | |
RESTINIO_NODISCARD auto | any_symbol_if_not_p (char sentinel) noexcept |
A factory function to create a any_symbol_if_not_producer. More... | |
RESTINIO_NODISCARD auto | caseless_symbol_p (char expected) noexcept |
A factory function to create a caseless_symbol_producer. More... | |
RESTINIO_NODISCARD auto | symbol_from_range_p (char left, char right) noexcept |
A factory function to create a symbol_from_range_producer. More... | |
RESTINIO_NODISCARD auto | symbol (char expected) noexcept |
A factory function to create a clause that expects the speficied symbol, extracts it and then skips it. More... | |
RESTINIO_NODISCARD auto | caseless_symbol (char expected) noexcept |
A factory function to create a clause that expects the speficied symbol, extracts it and then skips it. More... | |
RESTINIO_NODISCARD auto | symbol_from_range (char left, char right) noexcept |
A factory function to create a clause that expects a symbol from specified range, extracts it and then skips it. More... | |
RESTINIO_NODISCARD auto | space_p () noexcept |
A factory function to create a space_producer. More... | |
RESTINIO_NODISCARD auto | space () noexcept |
A factory function to create a clause that expects a space, extracts it and then skips it. More... | |
RESTINIO_NODISCARD auto | digit_p () noexcept |
A factory function to create a digit_producer. More... | |
RESTINIO_NODISCARD auto | digit () noexcept |
A factory function to create a clause that expects a decimal digit, extracts it and then skips it. More... | |
RESTINIO_NODISCARD auto | hexdigit_p () noexcept |
A factory function to create a hexdigit_producer. More... | |
RESTINIO_NODISCARD auto | hexdigit () noexcept |
A factory function to create a clause that expects a hexadecimal digit, extracts it and then skips it. More... | |
template<typename T > | |
RESTINIO_NODISCARD auto | non_negative_decimal_number_p () noexcept |
A factory function to create a non_negative_decimal_number_producer. More... | |
template<typename T > | |
RESTINIO_NODISCARD auto | non_negative_decimal_number_p (digits_to_consume_t digits_limit) noexcept |
A factory function to create a non_negative_decimal_number_producer. More... | |
template<typename T > | |
RESTINIO_NODISCARD auto | positive_decimal_number_producer () noexcept |
A factory function to create a producer for non-negative decimal numbers. More... | |
template<typename T > | |
RESTINIO_NODISCARD auto | hexadecimal_number_p () noexcept |
A factory function to create a hexadecimal_number_producer. More... | |
template<typename T > | |
RESTINIO_NODISCARD auto | hexadecimal_number_p (digits_to_consume_t digits_limit) noexcept |
A factory function to create a hexadecimal_number_producer. More... | |
template<typename T > | |
RESTINIO_NODISCARD auto | decimal_number_p () noexcept |
A factory function to create a decimal_number_producer. More... | |
template<typename T > | |
RESTINIO_NODISCARD auto | decimal_number_p (digits_to_consume_t digits_limit) noexcept |
A factory function to create a decimal_number_producer. More... | |
RESTINIO_NODISCARD auto | as_result () noexcept |
A factory function to create a as_result_consumer. More... | |
template<typename F > | |
RESTINIO_NODISCARD auto | custom_consumer (F consumer) |
A factory function to create a custom_consumer. More... | |
RESTINIO_NODISCARD auto | to_container () |
A factory function to create a to_container_consumer. More... | |
RESTINIO_NODISCARD auto | to_lower () noexcept |
A factory function to create a to_lower_transformer. More... | |
template<typename T > | |
RESTINIO_NODISCARD auto | just (T value) noexcept(noexcept(impl::just_value_transformer_t< T >{value})) |
A special transformer that replaces the produced value by a value specified by a user. More... | |
template<typename T > | |
RESTINIO_NODISCARD auto | just_result (T value) noexcept(noexcept(impl::just_result_consumer_t< T >{value})) |
A special consumer that replaces the produced value by a value specified by a user and sets that user-specified value as the result. More... | |
template<typename Converter > | |
RESTINIO_NODISCARD auto | convert (Converter &&converter) |
A factory function to create convert_transformer. More... | |
RESTINIO_NODISCARD auto | exact_p (string_view_t fragment) |
A factory function that creates an instance of exact_fragment_producer. More... | |
template<std::size_t Size> | |
RESTINIO_NODISCARD auto | exact_p (const char(&fragment)[Size]) |
A factory function that creates an instance of exact_fragment_producer. More... | |
RESTINIO_NODISCARD auto | exact (string_view_t fragment) |
A factory function that creates an instance of exact_fragment clause. More... | |
template<std::size_t Size> | |
RESTINIO_NODISCARD auto | exact (const char(&fragment)[Size]) |
A factory function that creates an instance of exact_fragment clause. More... | |
RESTINIO_NODISCARD auto | caseless_exact_p (string_view_t fragment) |
A factory function that creates an instance of caseless_exact_fragment_producer. More... | |
template<std::size_t Size> | |
RESTINIO_NODISCARD auto | caseless_exact_p (const char(&fragment)[Size]) |
A factory function that creates an instance of caseless_exact_fragment_producer. More... | |
RESTINIO_NODISCARD auto | caseless_exact (string_view_t fragment) |
A factory function that creates an instance of caseless_exact_fragment clause. More... | |
template<std::size_t Size> | |
RESTINIO_NODISCARD auto | caseless_exact (const char(&fragment)[Size]) |
A factory function that creates an instance of caseless_exact_fragment clause. More... | |
template<typename Producer > | |
RESTINIO_NODISCARD expected_t< typename Producer::result_type, parse_error_t > | try_parse (string_view_t from, Producer producer) |
Perform the parsing of the specified content by using specified value producer. More... | |
RESTINIO_NODISCARD std::string | make_error_description (const parse_error_t &error, string_view_t from) |
Make textual description of error returned by try_parse function. More... | |
Variables | |
constexpr std::size_t | N = std::numeric_limits<std::size_t>::max() |
A special marker that means infinite repetitions. More... | |
using restinio::easy_parser::result_wrapper_for_t = typedef typename result_wrapper_for<T>::type |
Definition at line 250 of file easy_parser.hpp.
|
strong |
Reason of parsing error.
Enumerator | |
---|---|
unexpected_character | Unexpected character is found in the input. |
unexpected_eof | Unexpected end of input is encontered when some character expected. |
no_appropriate_alternative | None of alternatives was found in the input. |
pattern_not_found | Required pattern is not found in the input. |
unconsumed_input | There are some unconsumed non-whitespace characters in the input after the completion of parsing. |
illegal_value_found | Illegal value was found in the input.
|
force_only_this_alternative_failed | A failure of parsing an alternative marked as "force only this alternative". This error code is intended for internal use for the implementation of alternatives() and force_only_this_alternative() stuff. This error tells the parser that other alternatives should not be checked and the parsing of the whole alternatives clause should failed too.
|
Definition at line 51 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::alternatives | ( | Clauses &&... | clauses | ) |
A factory function to create an alternatives clause.
Usage example:
Please note the usage of sequence() inside the call to alternatives().
Clauses | the list of clauses to be used as alternatives. |
Definition at line 3595 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::and_clause | ( | Clauses &&... | clauses | ) |
A factory function to create an and_clause.
Usage example:
this expression corresponds the following rule:
T := token SP token &(',' [' '] token)
Clauses | the list of clauses to be used as sequence to be checked. |
Definition at line 3718 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a any_symbol_if_not_producer.
Definition at line 3973 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create an any_symbol_producer.
Definition at line 3937 of file easy_parser.hpp.
|
inlinenoexcept |
RESTINIO_NODISCARD auto restinio::easy_parser::caseless_exact | ( | const char(&) | fragment[Size] | ) |
A factory function that creates an instance of caseless_exact_fragment clause.
Usage example:
Definition at line 5000 of file easy_parser.hpp.
|
inline |
A factory function that creates an instance of caseless_exact_fragment clause.
Usage example:
Definition at line 4962 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::caseless_exact_p | ( | const char(&) | fragment[Size] | ) |
A factory function that creates an instance of caseless_exact_fragment_producer.
Usage example:
Definition at line 4941 of file easy_parser.hpp.
|
inline |
A factory function that creates an instance of caseless_exact_fragment_producer.
Usage example:
Definition at line 4897 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a clause that expects the speficied symbol, extracts it and then skips it.
This clause performs caseless comparison of characters.
The call to ‘caseless_symbol('a’)` function is an equivalent of:
Definition at line 4055 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a caseless_symbol_producer.
This producer performs caseless comparison of characters.
Definition at line 3993 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::convert | ( | Converter && | converter | ) |
A factory function to create convert_transformer.
Usage example:
Definition at line 4737 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::custom_consumer | ( | F | consumer | ) |
A factory function to create a custom_consumer.
Usage example:
Definition at line 4516 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a decimal_number_producer.
Parses numbers in the form:
number := [sign] DIGIT+ sign := '-' | '+'
-1111someword
the leading minus sign and thefirst four digits (e.g. -1111
) will be extracted from the input and the remaining part (e.g. someword
) won't be consumed by this parser.Definition at line 4387 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a decimal_number_producer.
Parses numbers in the form:
number := [sign] DIGIT+ sign := '-' | '+'
Usage example:
Definition at line 4440 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a clause that expects a decimal digit, extracts it and then skips it.
The call to digit()
function is an equivalent of:
Definition at line 4154 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a digit_producer.
Definition at line 4133 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::exact | ( | const char(&) | fragment[Size] | ) |
A factory function that creates an instance of exact_fragment clause.
Usage example:
Definition at line 4871 of file easy_parser.hpp.
|
inline |
A factory function that creates an instance of exact_fragment clause.
Usage example:
Definition at line 4833 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::exact_p | ( | const char(&) | fragment[Size] | ) |
A factory function that creates an instance of exact_fragment_producer.
Usage example:
Definition at line 4812 of file easy_parser.hpp.
|
inline |
A factory function that creates an instance of exact_fragment_producer.
Usage example:
Definition at line 4768 of file easy_parser.hpp.
|
inlineconstexprnoexcept |
Create a limit for number of digits to be extracted.
Makes a limit where min and max are specified separately.
Usage example:
Definition at line 570 of file easy_parser.hpp.
|
inlineconstexprnoexcept |
Create a limit for number of digits to be extracted.
Makes a limit where min==max and both are equal to total.
Usage example:
Definition at line 549 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::force_only_this_alternative | ( | Clauses &&... | clauses | ) |
An alternative that should be parsed correctly or the parsing of the whole alternatives clause should fail.
This special clause is intended to be used to avoid mistakes in grammars like that:
v = "key" '=' token | token '=' 1*VCHAR
If that grammar will be used for parsing a sentence like "key=123" then the second alternative will be selected. It's because the parsing of rule "key" '=' token
fails at 123
and the second alternative will be tried. And "key" will be recognized as a token.
Before v.0.6.7 this mistake can be avoided by using rules like those:
v = "key" '=' token | !"key" token '=' 1*VCHAR
Since v.0.6.7 this mistake can be avoided by using force_only_this_alternative() function:
Definition at line 3821 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a hexadecimal_number_producer.
1111someword
the first four digits (e.g. 1111
) will be extracted from the input and the remaining part (e.g. someword
) won't be consumed by this parser.Definition at line 4307 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a hexadecimal_number_producer.
Usage example:
Definition at line 4349 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a clause that expects a hexadecimal digit, extracts it and then skips it.
The call to hexdigit()
function is an equivalent of:
Definition at line 4193 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a hexdigit_producer.
Definition at line 4172 of file easy_parser.hpp.
|
noexcept |
A special transformer that replaces the produced value by a value specified by a user.
Usage example:
Definition at line 4635 of file easy_parser.hpp.
|
noexcept |
A special consumer that replaces the produced value by a value specified by a user and sets that user-specified value as the result.
Usage example:
Definition at line 4664 of file easy_parser.hpp.
|
inline |
Make textual description of error returned by try_parse function.
Usage example:
Definition at line 5103 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::maybe | ( | Clauses &&... | clauses | ) |
A factory function to create an optional clause.
Usage example:
Clauses | the list of clauses to be used as optional sequence. |
Definition at line 3634 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a non_negative_decimal_number_producer.
1111someword
the first four digits (e.g. 1111
) will be extracted from the input and the remaining part (e.g. someword
) won't be consumed by this parser.Definition at line 4218 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a non_negative_decimal_number_producer.
Usage example:
Definition at line 4257 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::not_clause | ( | Clauses &&... | clauses | ) |
A factory function to create a not_clause.
Usage example:
this expression corresponds the following rule:
T := token SP token !'.'
Clauses | the list of clauses to be used as sequence to be checked. |
Definition at line 3676 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a producer for non-negative decimal numbers.
Definition at line 4279 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::produce | ( | Clauses &&... | clauses | ) |
A factory function to create a producer that creates an instance of the target type by using specified clauses.
Usage example:
Target_Type | the type of value to be produced. |
Clauses | the list of clauses to be used for a new value. |
Definition at line 3554 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::repeat | ( | std::size_t | min_occurences, |
std::size_t | max_occurences, | ||
Clauses &&... | clauses | ||
) |
A factory function to create repetitor of subclauses.
Usage example:
this expression corresponds to the following rule:
T := token '=' token *(',' token '=' token)
Clauses | the list of clauses to be used as the sequence to be repeated. |
min_occurences | Minimal occurences of the sequences in the repetition. |
max_occurences | Maximal occurences of the sequences in the repetition. |
clauses | The sequence of clauses to be repeated. |
Definition at line 3876 of file easy_parser.hpp.
RESTINIO_NODISCARD auto restinio::easy_parser::sequence | ( | Clauses &&... | clauses | ) |
A factory function to create a sequence of subclauses.
Usage example:
Please note the usage of sequence() inside the call to alternatives().
Clauses | the list of clauses to be used as the sequence. |
Definition at line 3758 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a skip_consumer.
Usage example:
Definition at line 3922 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a clause that expects a space, extracts it and then skips it.
The call to space()
function is an equivalent of:
Definition at line 4115 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a space_producer.
Definition at line 4094 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a clause that expects the speficied symbol, extracts it and then skips it.
The call to ‘symbol('a’)` function is an equivalent of:
Definition at line 4032 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a clause that expects a symbol from specified range, extracts it and then skips it.
The call to ‘symbol_from_range('a’, 'z')` function is an equivalent of:
Definition at line 4076 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a symbol_from_range_producer.
[left, right]
range in the input stream and returns it if that character is found.Definition at line 4011 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a symbol_producer.
Definition at line 3955 of file easy_parser.hpp.
|
inline |
A factory function to create a to_container_consumer.
Usage example:
Definition at line 4583 of file easy_parser.hpp.
|
inlinenoexcept |
A factory function to create a to_lower_transformer.
Usage example:
Definition at line 4610 of file easy_parser.hpp.
RESTINIO_NODISCARD expected_t< typename Producer::result_type, parse_error_t > restinio::easy_parser::try_parse | ( | string_view_t | from, |
Producer | producer | ||
) |
Perform the parsing of the specified content by using specified value producer.
Usage example
Definition at line 5042 of file easy_parser.hpp.
|
constexpr |
A special marker that means infinite repetitions.
Definition at line 455 of file easy_parser.hpp.