diff --git a/doc/html/BOOST_PARSER_ALGO_idm22568.html b/doc/html/BOOST_PARSER_ALGO_idm29927.html similarity index 97% rename from doc/html/BOOST_PARSER_ALGO_idm22568.html rename to doc/html/BOOST_PARSER_ALGO_idm29927.html index 56157a2e..d70df97c 100644 --- a/doc/html/BOOST_PARSER_ALGO_idm22568.html +++ b/doc/html/BOOST_PARSER_ALGO_idm29927.html @@ -15,7 +15,7 @@ PrevUpHomeNext
-
+

Macro BOOST_PARSER_ALGO_CONSTEXPR

BOOST_PARSER_ALGO_CONSTEXPR

diff --git a/doc/html/BOOST_PARSER_ASSERT.html b/doc/html/BOOST_PARSER_ASSERT.html index ab2fdc52..0e1a0508 100644 --- a/doc/html/BOOST_PARSER_ASSERT.html +++ b/doc/html/BOOST_PARSER_ASSERT.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -25,7 +25,7 @@

Synopsis

BOOST_PARSER_ASSERT(condition)
-

Description

+

Description

Asserts that the given condition is true. If BOOST_PARSER_NO_RUNTIME_ASSERTIONS macro is defined by the user, BOOST_PARSER_ASSERT expends to a compile-time static_assert(). Otherwise, it expands to a run-time BOOST_ASSERT().

@@ -36,7 +36,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/BOOST_PARSER_DEFINE_RULES.html b/doc/html/BOOST_PARSER_DEFINE_RULES.html index 498f519f..df78a4d9 100644 --- a/doc/html/BOOST_PARSER_DEFINE_RULES.html +++ b/doc/html/BOOST_PARSER_DEFINE_RULES.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -25,8 +25,8 @@

Synopsis

BOOST_PARSER_DEFINE_RULES(...)
-

Description

-

For each given token t, defines a pair of parse_rule() overloads, used internally within Boost.Parser. Each such pair implements the parsing behavior rule t, using the parser t_def. This macro is only available when the Boost.Preprocessor headers are available.

+

Description

+

For each given token t, defines a pair of parse_rule() overloads, used internally within Boost.Parser. Each such pair implements the parsing behavior rule t, using the parser t_def. This implementation is in the form of a pair of function templates. You should therefore write this macro only at namespace scope.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/BOOST_PARSER_DISA_idm22550.html b/doc/html/BOOST_PARSER_DISA_idm29909.html similarity index 89% rename from doc/html/BOOST_PARSER_DISA_idm22550.html rename to doc/html/BOOST_PARSER_DISA_idm29909.html index 82fa45c0..c0561f10 100644 --- a/doc/html/BOOST_PARSER_DISA_idm22550.html +++ b/doc/html/BOOST_PARSER_DISA_idm29909.html @@ -7,15 +7,15 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Macro BOOST_PARSER_DISABLE_CONCEPTS

BOOST_PARSER_DISABLE_CONCEPTS

@@ -25,7 +25,7 @@

Synopsis

BOOST_PARSER_DISABLE_CONCEPTS
-

Description

+

Description

Boost.Parser will automatically use concepts to constrain templates when building in C++20 mode, if the compiler defines __cpp_lib_concepts. To disable the use of concepts, define this macro.

@@ -36,7 +36,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/BOOST_PARSER_DISA_idm22554.html b/doc/html/BOOST_PARSER_DISA_idm29913.html similarity index 78% rename from doc/html/BOOST_PARSER_DISA_idm22554.html rename to doc/html/BOOST_PARSER_DISA_idm29913.html index 6b87b791..18026146 100644 --- a/doc/html/BOOST_PARSER_DISA_idm22554.html +++ b/doc/html/BOOST_PARSER_DISA_idm29913.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Macro BOOST_PARSER_DISABLE_HANA_TUPLE

BOOST_PARSER_DISABLE_HANA_TUPLE

@@ -25,7 +25,7 @@

Synopsis

BOOST_PARSER_DISABLE_HANA_TUPLE
-

Description

+

Description

Define this macro to use std::tuple instead of boost::hana::tuple throughout Boost.Parser.

@@ -36,7 +36,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/BOOST_PARSER_MAX__idm22559.html b/doc/html/BOOST_PARSER_MAX__idm29918.html similarity index 89% rename from doc/html/BOOST_PARSER_MAX__idm22559.html rename to doc/html/BOOST_PARSER_MAX__idm29918.html index 96e07f24..5013bac8 100644 --- a/doc/html/BOOST_PARSER_MAX__idm22559.html +++ b/doc/html/BOOST_PARSER_MAX__idm29918.html @@ -6,16 +6,16 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Macro BOOST_PARSER_MAX_AGGREGATE_SIZE

BOOST_PARSER_MAX_AGGREGATE_SIZE

@@ -25,7 +25,7 @@

Synopsis

BOOST_PARSER_MAX_AGGREGATE_SIZE
-

Description

+

Description

Boost.Parser automatically treats aggregate structs as if they were tuples. It uses some metaprogramming to do this. The technique used has a hard limit on the number of data members a struct can have. Re-define this macro to change the hard limit. Note that large values may increase compile times.

@@ -36,7 +36,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/BOOST_PARSER_NO_R_idm22538.html b/doc/html/BOOST_PARSER_NO_R_idm29897.html similarity index 96% rename from doc/html/BOOST_PARSER_NO_R_idm22538.html rename to doc/html/BOOST_PARSER_NO_R_idm29897.html index dcf2df8a..c1df52c5 100644 --- a/doc/html/BOOST_PARSER_NO_R_idm22538.html +++ b/doc/html/BOOST_PARSER_NO_R_idm29897.html @@ -15,7 +15,7 @@ PrevUpHomeNext
-
+

Macro BOOST_PARSER_NO_RUNTIME_ASSERTIONS

BOOST_PARSER_NO_RUNTIME_ASSERTIONS

@@ -25,7 +25,7 @@

Synopsis

BOOST_PARSER_NO_RUNTIME_ASSERTIONS
-

Description

+

Description

Boost.Parser uses assertions (BOOST_ASSERT()) in several places to indicate that your use of the library has an error in it. All of those places could heve instead been ill-formed code, caught at compile time. It is far quicker and easier to determine exactly where in your code such an error is located if this is a runtime failure; you can just look at the stack in your favorite debugger. However, if you want to make thes kinds of errors always ill-formed code, define this macro.

diff --git a/doc/html/BOOST_PARSER_SUBRANGE.html b/doc/html/BOOST_PARSER_SUBRANGE.html index 2e946cb0..b2f216f4 100644 --- a/doc/html/BOOST_PARSER_SUBRANGE.html +++ b/doc/html/BOOST_PARSER_SUBRANGE.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -25,7 +25,7 @@

Synopsis

BOOST_PARSER_SUBRANGE
-

Description

+

Description

The subrange template that is used throughout Boost.Parser. This will be boost::parser::subrange in C++17 builds, and std::ranges::subrange in all other builds.

@@ -36,7 +36,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/BOOST_PARSER_USE_CONCEPTS.html b/doc/html/BOOST_PARSER_USE_CONCEPTS.html index db2df218..a14a0111 100644 --- a/doc/html/BOOST_PARSER_USE_CONCEPTS.html +++ b/doc/html/BOOST_PARSER_USE_CONCEPTS.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -32,7 +32,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/Inf.html b/doc/html/boost/parser/Inf.html index 85e5f412..149c6dc5 100644 --- a/doc/html/boost/parser/Inf.html +++ b/doc/html/boost/parser/Inf.html @@ -25,7 +25,7 @@

Synopsis

int64_t const Inf;
-

Description

+

Description

A very large sentinel value used to represent pseudo-infinity.

diff --git a/doc/html/boost/parser/_attr.html b/doc/html/boost/parser/_attr.html index e357609d..330078ef 100644 --- a/doc/html/boost/parser/_attr.html +++ b/doc/html/boost/parser/_attr.html @@ -5,14 +5,14 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,12 +21,12 @@

Function template _attr

boost::parser::_attr

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> decltype(auto) _attr(Context const & context);
-

Description

+

Description

Returns a reference to the attribute or attributes already produced by the bottommost parser; multiple attributes will be stored within a parser::tuple. Returns none if the bottommost parser does produce an attribute.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_begin.html b/doc/html/boost/parser/_begin.html index 77a946d2..f385b68b 100644 --- a/doc/html/boost/parser/_begin.html +++ b/doc/html/boost/parser/_begin.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,12 +21,12 @@

Function template _begin

boost::parser::_begin

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> decltype(auto) _begin(Context const & context);
-

Description

+

Description

Returns an iterator to the beginning of the entire sequence being parsed. The effect of calling this within a semantic action associated with a skip-parser is undefined

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_end.html b/doc/html/boost/parser/_end.html index 8a15dc53..541b6b6e 100644 --- a/doc/html/boost/parser/_end.html +++ b/doc/html/boost/parser/_end.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,12 +21,12 @@

Function template _end

boost::parser::_end

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> decltype(auto) _end(Context const & context);
-

Description

+

Description

Returns an iterator to the end of the entire sequence being parsed.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_error_handler.html b/doc/html/boost/parser/_error_handler.html index b3d75ec6..0ab04c6c 100644 --- a/doc/html/boost/parser/_error_handler.html +++ b/doc/html/boost/parser/_error_handler.html @@ -5,14 +5,14 @@ - + - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,13 +21,13 @@

Function template _error_handler

boost::parser::_error_handler

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> 
   decltype(auto) _error_handler(Context const & context);
-

Description

+

Description

Returns a reference to the error handler object associated with the top-level parser. Returns none if there is no associated error handler.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_globals.html b/doc/html/boost/parser/_globals.html index b212611c..2a231ae4 100644 --- a/doc/html/boost/parser/_globals.html +++ b/doc/html/boost/parser/_globals.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,12 +21,12 @@

Function template _globals

boost::parser::_globals

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> decltype(auto) _globals(Context const & context);
-

Description

+

Description

Returns a reference to the globals object associated with the top-level parser. Returns none if there is no associated globals object.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_locals.html b/doc/html/boost/parser/_locals.html index 2d4e4427..580b62b0 100644 --- a/doc/html/boost/parser/_locals.html +++ b/doc/html/boost/parser/_locals.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,12 +21,12 @@

Function template _locals

boost::parser::_locals

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> decltype(auto) _locals(Context const & context);
-

Description

+

Description

Returns a reference to one or more local values that the bottommost rule is declared to have; multiple values will be stored within a parser::tuple. Returns none if there is no bottommost rule, or if that rule has no locals.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_p.html b/doc/html/boost/parser/_p.html index bbc8cda4..7a628735 100644 --- a/doc/html/boost/parser/_p.html +++ b/doc/html/boost/parser/_p.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -25,7 +25,7 @@

Synopsis

unspecified _p;
-

Description

+

Description

An invocable that returns the Ith parameter to the bottommost rule. This is useful for forwarding parameters to sub-rules.

@@ -36,7 +36,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_params.html b/doc/html/boost/parser/_params.html index 362be567..4f214fdc 100644 --- a/doc/html/boost/parser/_params.html +++ b/doc/html/boost/parser/_params.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,12 +21,12 @@

Function template _params

boost::parser::_params

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> decltype(auto) _params(Context const & context);
-

Description

+

Description

Returns a reference to one or more parameters passed to the bottommost rule r, by using r as r.with(param0, param1, ... paramN); multiple values will be stored within a parser::tuple. Returns none if there is no bottommost rule, or if that rule was not given any parameters.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_pass.html b/doc/html/boost/parser/_pass.html index 0eb55032..26df67d7 100644 --- a/doc/html/boost/parser/_pass.html +++ b/doc/html/boost/parser/_pass.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,12 +21,12 @@

Function template _pass

boost::parser::_pass

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> decltype(auto) _pass(Context const & context);
-

Description

+

Description

Returns a reference to a bool that represents the success or failure of the bottommost parser. You can assign false to this within a semantic action to force a parser to fail its parse.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_val.html b/doc/html/boost/parser/_val.html index 08c849d2..a61170bb 100644 --- a/doc/html/boost/parser/_val.html +++ b/doc/html/boost/parser/_val.html @@ -1,32 +1,32 @@ -Function template _val +Function _val - - + +
-PrevUpHomeNext +PrevUpHomeNext
-

Function template _val

+

Function _val

boost::parser::_val

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
-template<typename Context> decltype(auto) _val(Context const & context);
+decltype(auto) _val(Context const & context);
-

Description

+

Description

Returns a reference to the attribute(s) (i.e. return value) of the bottommost parser; multiple attributes will be stored within a parser::tuple. You may write to this value in a semantic action to control what attribute value(s) the associated parser produces. Returns none if the bottommost parser does produce an attribute.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/_where.html b/doc/html/boost/parser/_where.html index 213759b3..a8e22525 100644 --- a/doc/html/boost/parser/_where.html +++ b/doc/html/boost/parser/_where.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,12 +21,12 @@

Function template _where

boost::parser::_where

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> decltype(auto) _where(Context const & context);
-

Description

+

Description

Returns a subrange that describes the matched range of the bottommost parser.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/action_parser.html b/doc/html/boost/parser/action_parser.html index 11fe1ebb..4ab97216 100644 --- a/doc/html/boost/parser/action_parser.html +++ b/doc/html/boost/parser/action_parser.html @@ -5,14 +5,14 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,47 +21,14 @@

Struct template action_parser

boost::parser::action_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename Parser, typename Action> 
 struct action_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    unspecified call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-                     Context const &, SkipParser const &, unspecified, 
-                     bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  Parser parser_;
-  Action action_;
 };
-

Description

+

Description

Applies the given parser p of type Parser and an invocable a of type Action. Action shall model semantic_action, and a will only be invoked if p succeeds. The parse succeeds iff p succeeds. Produces no attribute.

-
-

-action_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  unspecified call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -                   Sentinel last, Context const & context, 
    -                   SkipParser const & skip, unspecified flags, 
    -                   bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/as_utf16.html b/doc/html/boost/parser/as_utf16.html index 46c6e257..9640ee44 100644 --- a/doc/html/boost/parser/as_utf16.html +++ b/doc/html/boost/parser/as_utf16.html @@ -25,7 +25,7 @@

Synopsis

constexpr auto as_utf16;
-

Description

+

Description

A view adaptor that produces a utf16_view of the given view.

diff --git a/doc/html/boost/parser/as_utf32.html b/doc/html/boost/parser/as_utf32.html index 6d0cd145..ebb86f93 100644 --- a/doc/html/boost/parser/as_utf32.html +++ b/doc/html/boost/parser/as_utf32.html @@ -25,7 +25,7 @@

Synopsis

constexpr auto as_utf32;
-

Description

+

Description

A view adaptor that produces a utf32_view of the given view.

diff --git a/doc/html/boost/parser/as_utf8.html b/doc/html/boost/parser/as_utf8.html index 0db86a95..3bc67ff8 100644 --- a/doc/html/boost/parser/as_utf8.html +++ b/doc/html/boost/parser/as_utf8.html @@ -25,7 +25,7 @@

Synopsis

constexpr auto as_utf8;
-

Description

+

Description

A view adaptor that produces a utf8_view of the given view.

diff --git a/doc/html/boost/parser/attr.html b/doc/html/boost/parser/attr.html index 11e87644..f66a706c 100644 --- a/doc/html/boost/parser/attr.html +++ b/doc/html/boost/parser/attr.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,7 +26,7 @@

Synopsis

template<typename Attribute> constexpr auto attr(Attribute a);
-

Description

+

Description

Returns an attr_parser which matches anything, and consumes no input, and which produces a as its attribute.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/attr_parser.html b/doc/html/boost/parser/attr_parser.html index c03d14b5..18b1c54a 100644 --- a/doc/html/boost/parser/attr_parser.html +++ b/doc/html/boost/parser/attr_parser.html @@ -5,14 +5,14 @@ - + - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,44 +21,14 @@

Struct template attr_parser

boost::parser::attr_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename Attribute> 
 struct attr_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute_> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute_ &) const;
-
-  // public data members
-  Attribute attr_;
 };
-

Description

+

Description

Matches anything, consumes no input, and produces an attribute of type RESOLVE(Attribute).

-
-

-attr_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const &, 
    -            unspecified flags, bool &) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute_> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute_ & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/attribute.html b/doc/html/boost/parser/attribute.html new file mode 100644 index 00000000..d187238d --- /dev/null +++ b/doc/html/boost/parser/attribute.html @@ -0,0 +1,47 @@ + + + +Struct template attribute + + + + + + + + + +
+PrevUpHomeNext +
+
+
+
+

Struct template attribute

+

boost::parser::attribute

+
+

Synopsis

+
// In header: <boost/parser/parser.hpp>
+
+template<typename R, typename Parser> 
+struct attribute {
+  // types
+  typedef unspecified initial_type;
+  typedef unspecified type;        
+};
+
+

Description

+

A type trait that evaluates to the attribute type for parser Parser used to parse range R, as if by calling parse(r, parser), using some R r and Parser parser. Note that this implies that pointers to null-terminated strings are supported types for R. The result is not wrapped in a std::optional like the result of a call to parse() would be. If Parser produces no attribute, the result is the no-attribute sentinel type none.

+
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost/parser/attribute_t.html b/doc/html/boost/parser/attribute_t.html new file mode 100644 index 00000000..eff06150 --- /dev/null +++ b/doc/html/boost/parser/attribute_t.html @@ -0,0 +1,43 @@ + + + +Type definition attribute_t + + + + + + + + + +
+PrevUpHomeNext +
+
+
+
+

Type definition attribute_t

+

attribute_t

+
+

Synopsis

+
// In header: <boost/parser/parser_fwd.hpp>
+
+
+typedef typename attribute< R, Parser >::type attribute_t;
+
+

Description

+

An alias for typename attribute<R, Parser>::type.

+
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost/parser/bin.html b/doc/html/boost/parser/bin.html index 7942e07c..e8329db9 100644 --- a/doc/html/boost/parser/bin.html +++ b/doc/html/boost/parser/bin.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< uint_parser< unsigned int, 2 > > bin;
-

Description

+

Description

The binary unsigned integer parser. Produces an unsigned int attribute. To parse a particular value x, use bin(x).

diff --git a/doc/html/boost/parser/blank.html b/doc/html/boost/parser/blank.html index 75c12dee..8806364b 100644 --- a/doc/html/boost/parser/blank.html +++ b/doc/html/boost/parser/blank.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< ws_parser< false, true > > blank;
-

Description

+

Description

The whitespace parser that does not match end-of-line. This matches any one of the Unicode code points with the White_Space property, as defined in https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt, except for the ones matched by eol. Produces no attribute.

diff --git a/doc/html/boost/parser/bool_.html b/doc/html/boost/parser/bool_.html index d10612a1..d795e7c8 100644 --- a/doc/html/boost/parser/bool_.html +++ b/doc/html/boost/parser/bool_.html @@ -23,9 +23,9 @@

Global bool_

Synopsis

// In header: <boost/parser/parser.hpp>
 
-constexpr parser_interface< bool_parser > bool_;
+constexpr parser_interface< bool_parser > bool_;
-

Description

+

Description

The Boolean parser. Parses "true" and "false", producing attributes true and false, respectively, and fails on any other input.

diff --git a/doc/html/boost/parser/bool_parser.html b/doc/html/boost/parser/bool_parser.html deleted file mode 100644 index 246ab86d..00000000 --- a/doc/html/boost/parser/bool_parser.html +++ /dev/null @@ -1,70 +0,0 @@ - - - -Struct bool_parser - - - - - - - - - -
-PrevUpHomeNext -
-
-
-
-

Struct bool_parser

-

boost::parser::bool_parser

-
-

Synopsis

-
// In header: <boost/parser/parser.hpp>
-
-
-struct bool_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    bool call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-};
-
-

Description

-
-

-bool_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  bool call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-
-
-
- -
-
-PrevUpHomeNext -
- - diff --git a/doc/html/boost/parser/callback_error_handler.html b/doc/html/boost/parser/callback_error_handler.html index 4a8f6649..20a57a68 100644 --- a/doc/html/boost/parser/callback_error_handler.html +++ b/doc/html/boost/parser/callback_error_handler.html @@ -29,19 +29,19 @@

Synopsis

typedef std::function< void(std::string const &)> callback_type; // construct/copy/destruct - callback_error_handler(); - callback_error_handler(callback_type, callback_type = callback_type(), + callback_error_handler(); + callback_error_handler(callback_type, callback_type = callback_type(), std::string_view = ""); - callback_error_handler(callback_type, callback_type, std::wstring_view); + callback_error_handler(callback_type, callback_type, std::wstring_view); - // public member functions + // public member functions template<typename Iter, typename Sentinel> error_handler_result - operator()(Iter, Sentinel, parse_error< Iter > const &) const; + operator()(Iter, Sentinel, parse_error< Iter > const &) const; template<typename Context, typename Iter> - void diagnose(diagnostic_kind, std::string_view, Context const &, Iter) const; + void diagnose(diagnostic_kind, std::string_view, Context const &, Iter) const; template<typename Context> - void diagnose(diagnostic_kind, std::string_view, Context const &) const; + void diagnose(diagnostic_kind, std::string_view, Context const &) const; // public data members callback_type error_; @@ -49,37 +49,37 @@

Synopsis

std::string filename_; };
-

Description

+

Description

An error handler that allows users to supply callbacks to handle the reporting of warnings and errors. The reporting of errors and/or warnings can be suppressed by supplying one or both default-constructed callbacks.

-

+

callback_error_handler public construct/copy/destruct

    -
  1. callback_error_handler();
  2. -
  3. callback_error_handler(callback_type error, 
    +
  4. callback_error_handler();
  5. +
  6. callback_error_handler(callback_type error, 
                            callback_type warning = callback_type(), 
                            std::string_view filename = "");
  7. -
    callback_error_handler(callback_type error, callback_type warning, 
    +
    callback_error_handler(callback_type error, callback_type warning, 
                            std::wstring_view filename);

    This overload is Windows-only.

-

-callback_error_handler public member functions

+

+callback_error_handler public member functions

  1. template<typename Iter, typename Sentinel> 
       error_handler_result 
    -  operator()(Iter first, Sentinel last, parse_error< Iter > const & e) const;
  2. + operator()(Iter first, Sentinel last, parse_error< Iter > const & e) const;
  3. template<typename Context, typename Iter> 
    -  void diagnose(diagnostic_kind kind, std::string_view message, 
    +  void diagnose(diagnostic_kind kind, std::string_view message, 
                     Context const & context, Iter it) const;
  4. template<typename Context> 
    -  void diagnose(diagnostic_kind kind, std::string_view message, 
    +  void diagnose(diagnostic_kind kind, std::string_view message, 
                     Context const & context) const;
diff --git a/doc/html/boost/parser/callback_parse_idm27307.html b/doc/html/boost/parser/callback_parse_idm32767.html similarity index 71% rename from doc/html/boost/parser/callback_parse_idm27307.html rename to doc/html/boost/parser/callback_parse_idm32767.html index ad572d7f..e0373504 100644 --- a/doc/html/boost/parser/callback_parse_idm27307.html +++ b/doc/html/boost/parser/callback_parse_idm32767.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template callback_parse

boost::parser::callback_parse

@@ -24,16 +24,36 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename Callbacks, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser, typename GlobalState, 
+         typename ErrorHandler, typename Callbacks> 
   bool callback_parse(R const & r, 
                       parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                       Callbacks const & callbacks, 
                       trace trace_mode = trace::off);
-

Description

-

Parses r using parser, and returns whether the parse was successful. The entire input range r must be consumed for the parse to be considered successful. When a callback rule r is successful during the parse, one of two things happens: 1) if r has an attribute, callbacks(tag, x) will be called (where tag is decltype(r)::tag_type{}, and x is the attribute produced by r); or 2) if r has no attribute, callbacks(tag) will be called. Callbacks is expected to be an invocable with the correct overloads required to support all successful rule parses that might occur. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

Description

+

Parses r using parser, and returns whether the parse was successful. The entire input range r must be consumed for the parse to be considered successful. When a callback rule r is successful during the parse, one of two things happens: 1) if r has an attribute, callbacks(tag, x) will be called (where tag is decltype(r)::tag_type{}, and x is the attribute produced by r); or 2) if r has no attribute, callbacks(tag) will be called. Callbacks is expected to be an invocable with the correct overloads required to support all successful rule parses that might occur. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

+

+
++++ + + + + +

Template Parameters:

++++ + + + + +

ErrorHandler

Constrained by error_handler<ErrorHandler,std::ranges::iterator_t<decltype(subrange_of(r))>, std::ranges::sentinel_t<decltype(subrange_of(r))>, GlobalState>, where subrange_of is an implementation detail that: creates subranges out of pointers; trims trailing zeros off of bounded arrays (such as string literals); and transcodes to UTF-32 if the input is non-char.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/callback_parse_idm27388.html b/doc/html/boost/parser/callback_parse_idm32854.html similarity index 76% rename from doc/html/boost/parser/callback_parse_idm27388.html rename to doc/html/boost/parser/callback_parse_idm32854.html index cd639b61..06326a7c 100644 --- a/doc/html/boost/parser/callback_parse_idm27388.html +++ b/doc/html/boost/parser/callback_parse_idm32854.html @@ -6,16 +6,16 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template callback_parse

boost::parser::callback_parse

@@ -24,17 +24,37 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename SkipParser, typename Callbacks, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser, typename GlobalState, 
+         typename ErrorHandler, typename SkipParser, typename Callbacks> 
   bool callback_parse(R const & r, 
                       parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                       parser_interface< SkipParser > const & skip, 
                       Callbacks const & callbacks, 
                       trace trace_mode = trace::off);
-

Description

-

Parses r using parser, skipping all input recognized by skip between the application of any two parsers, and returns whether the parse was successful. The entire input range r must be consumed for the parse to be considered successful. When a callback rule r is successful during the parse, one of two things happens: 1) if r has an attribute, callbacks(tag, x) will be called (where tag is decltype(r)::tag_type{}, and x is the attribute produced by r); or 2) if r has no attribute, callbacks(tag) will be called. Callbacks is expected to be an invocable with the correct overloads required to support all successful rule parses that might occur. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

Description

+

Parses r using parser, skipping all input recognized by skip between the application of any two parsers, and returns whether the parse was successful. The entire input range r must be consumed for the parse to be considered successful. When a callback rule r is successful during the parse, one of two things happens: 1) if r has an attribute, callbacks(tag, x) will be called (where tag is decltype(r)::tag_type{}, and x is the attribute produced by r); or 2) if r has no attribute, callbacks(tag) will be called. Callbacks is expected to be an invocable with the correct overloads required to support all successful rule parses that might occur. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

+

+
++++ + + + + +

Template Parameters:

++++ + + + + +

ErrorHandler

Constrained by error_handler<ErrorHandler,std::ranges::iterator_t<decltype(subrange_of(r))>, std::ranges::sentinel_t<decltype(subrange_of(r))>, GlobalState>, where subrange_of is an implementation detail that: creates subranges out of pointers; trims trailing zeros off of bounded arrays (such as string literals); and transcodes to UTF-32 if the input is non-char.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/callback_prefix_p_idm27268.html b/doc/html/boost/parser/callback_prefix_p_idm32727.html similarity index 71% rename from doc/html/boost/parser/callback_prefix_p_idm27268.html rename to doc/html/boost/parser/callback_prefix_p_idm32727.html index e139b2d7..8f0e0270 100644 --- a/doc/html/boost/parser/callback_prefix_p_idm27268.html +++ b/doc/html/boost/parser/callback_prefix_p_idm32727.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template callback_prefix_parse

boost::parser::callback_prefix_parse

@@ -24,15 +24,15 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename I, typename S, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename Callbacks, 
-         typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
+template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
+         typename GlobalState, 
+         error_handler< I, S, GlobalState > ErrorHandler, typename Callbacks> 
   bool callback_prefix_parse(I & first, S last, 
                              parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                              Callbacks const & callbacks, 
                              trace trace_mode = trace::off);
-

Description

+

Description

Parses [first, last) using parser, and returns whether the parse was successful. When a callback rule r is successful during the parse, one of two things happens: 1) if r has an attribute, callbacks(tag, x) will be called (where tag is decltype(r)::tag_type{}, and x is the attribute produced by r); or 2) if r has no attribute, callbacks(tag) will be called. Callbacks is expected to be an invocable with the correct overloads required to support all successful rule parses that might occur. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

@@ -43,7 +43,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/callback_prefix_p_idm27344.html b/doc/html/boost/parser/callback_prefix_p_idm32809.html similarity index 72% rename from doc/html/boost/parser/callback_prefix_p_idm27344.html rename to doc/html/boost/parser/callback_prefix_p_idm32809.html index 36a48240..68dd6484 100644 --- a/doc/html/boost/parser/callback_prefix_p_idm27344.html +++ b/doc/html/boost/parser/callback_prefix_p_idm32809.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template callback_prefix_parse

boost::parser::callback_prefix_parse

@@ -24,16 +24,17 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename I, typename S, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename SkipParser, typename Callbacks, 
-         typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
+template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
+         typename GlobalState, 
+         error_handler< I, S, GlobalState > ErrorHandler, typename SkipParser, 
+         typename Callbacks> 
   bool callback_prefix_parse(I & first, S last, 
                              parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                              parser_interface< SkipParser > const & skip, 
                              Callbacks const & callbacks, 
                              trace trace_mode = trace::off);
-

Description

+

Description

Parses [first, last) using parser, skipping all input recognized by skip between the application of any two parsers, and returns whether the parse was successful. When a callback rule r is successful during the parse, one of two things happens: 1) if r has an attribute, callbacks(tag, x) will be called (where tag is decltype(r)::tag_type{}, and x is the attribute produced by r); or 2) if r has no attribute, callbacks(tag) will be called. Callbacks is expected to be an invocable with the correct overloads required to support all successful rule parses that might occur. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

@@ -44,7 +45,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/callback_rule.html b/doc/html/boost/parser/callback_rule.html index bb4f5c9b..77520b2f 100644 --- a/doc/html/boost/parser/callback_rule.html +++ b/doc/html/boost/parser/callback_rule.html @@ -5,14 +5,14 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,35 +21,16 @@

Struct template callback_rule

boost::parser::callback_rule

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
-template<typename TagType, typename Attribute, typename LocalState, 
-         typename ParamsTuple> 
-struct callback_rule : public boost::parser::parser_interface< rule_parser< true, TagType, Attribute, LocalState, ParamsTuple > >
-{
-  // construct/copy/destruct
-  callback_rule(char const *);
-
-  // public member functions
-  template<typename T, typename... Ts> 
-    constexpr auto with(T &&, Ts &&...) const;
+template<typename TagType, typename Attribute = no_attribute, 
+         typename LocalState = no_local_state, 
+         typename ParamsTuple = no_params> 
+struct callback_rule {
 };
-

Description

+

Description

A type used to declare named parsing rules that support reporting of attributes via callback. The TagType template parameter is used to associate a particular rule with the rule_parser used during parsing.

-
-

-callback_rule - public - construct/copy/destruct

-
  1. callback_rule(char const * diagnostic_text);
-
-
-

-callback_rule public member functions

-
  1. template<typename T, typename... Ts> 
    -  constexpr auto with(T && x, Ts &&... xs) const;
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/char_.html b/doc/html/boost/parser/char_.html index 17c59a67..d75c5c9d 100644 --- a/doc/html/boost/parser/char_.html +++ b/doc/html/boost/parser/char_.html @@ -25,8 +25,8 @@

Synopsis

unspecified char_;
-

Description

-

The literal code point parser. The produced attribute is the type of the matched code point. This parser can be used to create code point parsers that match one or more specific code point values, by calling it with: a single value comparable to a code point; a set of code point values in a string; a closed range of code point values [lo, hi], or a set of code point values passed as a range.

+

Description

+

The single-character parser. The produced attribute is the type of the matched code point (char or char32_t). Used as-is, char_ matches any code point. char_ can also can be used to create code point parsers that match one or more specific code point values, by calling it with: a single value comparable to a code point; a closed range of code point values [lo, hi], or a set of code point values passed as a range. When calling with a range, only the iterators that bound the range are stored. Make sure the range you pass outlives the use of the resulting parser. Note that a string literal is a range, and that it outlives any parser it is used to construct.

-

Description

+

Description

The control character parser. Matches the all Unicode code points with the "Cc" ("control character") character property.

diff --git a/doc/html/boost/parser/cp.html b/doc/html/boost/parser/cp.html index ba31494a..11a0d289 100644 --- a/doc/html/boost/parser/cp.html +++ b/doc/html/boost/parser/cp.html @@ -25,8 +25,8 @@

Synopsis

unspecified cp;
-

Description

-

The literal code point parser. It produces a char32_t attribute. This parser can be used to create code point parsers that match one or more specific code point values, by calling it with: a single value comparable to a code point; a set of code point values in a string; a closed range of code point values [lo, hi], or a set of code point values passed as a range.

+

Description

+

The code point parser. It produces a char32_t attribute. Used as-is, cp matches any code point. cp can also can be used to create code point parsers that match one or more specific code point values, by calling it with: a single value comparable to a code point; a closed range of code point values [lo, hi], or a set of code point values passed as a range. When calling with a range, only the iterators that bound the range are stored. Make sure the range you pass outlives the use of the resulting parser. Note that a string literal is a range, and that it outlives any parser it is used to construct.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/default_error_handler.html b/doc/html/boost/parser/default_error_handler.html index 06914c65..14c851a0 100644 --- a/doc/html/boost/parser/default_error_handler.html +++ b/doc/html/boost/parser/default_error_handler.html @@ -26,46 +26,46 @@

Synopsis

struct default_error_handler { // construct/copy/destruct - default_error_handler() = default; + default_error_handler() = default; - // public member functions + // public member functions template<typename Iter, typename Sentinel> error_handler_result - operator()(Iter, Sentinel, parse_error< Iter > const &) const; + operator()(Iter, Sentinel, parse_error< Iter > const &) const; template<typename Context, typename Iter> - void diagnose(diagnostic_kind, std::string_view, Context const &, Iter) const; + void diagnose(diagnostic_kind, std::string_view, Context const &, Iter) const; template<typename Context> - void diagnose(diagnostic_kind, std::string_view, Context const &) const; + void diagnose(diagnostic_kind, std::string_view, Context const &) const; };
-

Description

+

Description

The error handler used when the user does not specify a custom one. This error handler prints warnings and errors to std::cerr, and does not have an associcated filename.

-

+

default_error_handler public construct/copy/destruct

-
  1. default_error_handler() = default;
+
  1. default_error_handler() = default;
-

-default_error_handler public member functions

+

+default_error_handler public member functions

  1. template<typename Iter, typename Sentinel> 
       error_handler_result 
    -  operator()(Iter first, Sentinel last, parse_error< Iter > const & e) const;
    + operator()(Iter first, Sentinel last, parse_error< Iter > const & e) const;

    Handles a parse_error exception thrown during parsing. A formatted parse-expectation failure is printed to std::cerr. Always returns error_handler_result::fail.

  2. template<typename Context, typename Iter> 
    -  void diagnose(diagnostic_kind kind, std::string_view message, 
    +  void diagnose(diagnostic_kind kind, std::string_view message, 
                     Context const & context, Iter it) const;

    Prints message to std::cerr. The diagnostic is printed with the given kind, indicating the location as being at it. This must be called within a parser semantic action, providing the parse context.

  3. template<typename Context> 
    -  void diagnose(diagnostic_kind kind, std::string_view message, 
    +  void diagnose(diagnostic_kind kind, std::string_view message, 
                     Context const & context) const;

    Prints message to std::cerr. The diagnostic is printed with the given kind, at no particular location. This must be called within a parser semantic action, providing the parse context.

  4. diff --git a/doc/html/boost/parser/delimited_seq_parser.html b/doc/html/boost/parser/delimited_seq_parser.html index 90517c84..b122172c 100644 --- a/doc/html/boost/parser/delimited_seq_parser.html +++ b/doc/html/boost/parser/delimited_seq_parser.html @@ -6,13 +6,13 @@ - - + +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -28,19 +28,17 @@

    Synopsis

    public boost::parser::repeat_parser< Parser, DelimiterParser > { // construct/copy/destruct - delimited_seq_parser(Parser, DelimiterParser); + delimited_seq_parser(Parser, DelimiterParser); };
    -

    Description

    -

    Repeats the application of another parser p of type Parser, [1, Inf) times, applying a parser d of type DelimiterParser in between each pair of applications of p. The parse succeeds iff p succeeds at least once, and d succeeds each time it is applied. The attribute produced is a sequence of the type of attribute produced by Parser.

    -

    A simplified repeat_parser that applies parser zero or more times, with delimiter_parser applied before each application of parser after the first.
    -

    +

    Description

    +

    Repeats the application of another parser p of type Parser, [1, Inf) times, applying a parser d of type DelimiterParser in between each pair of applications of p. The parse succeeds iff p succeeds at least once, and d succeeds each time it is applied. The attribute produced is a sequence of the type of attribute produced by Parser.

    -

    +

    delimited_seq_parser public construct/copy/destruct

    -
    1. delimited_seq_parser(Parser parser, DelimiterParser delimiter_parser);
    +
    1. delimited_seq_parser(Parser parser, DelimiterParser delimiter_parser);
@@ -51,7 +49,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/diagnostic_kind.html b/doc/html/boost/parser/diagnostic_kind.html index a8e244ec..71f83f07 100644 --- a/doc/html/boost/parser/diagnostic_kind.html +++ b/doc/html/boost/parser/diagnostic_kind.html @@ -7,12 +7,12 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -27,7 +27,7 @@

Synopsis

enum diagnostic_kind { error, warning };
-

Description

+

Description

The kinds of diagnostics that can be handled by an error handler.

warning
@@ -43,7 +43,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/digit.html b/doc/html/boost/parser/digit.html index 0a8f1dca..ea024eea 100644 --- a/doc/html/boost/parser/digit.html +++ b/doc/html/boost/parser/digit.html @@ -23,9 +23,9 @@

Global digit

Synopsis

// In header: <boost/parser/parser.hpp>
 
-constexpr parser_interface< digit_parser > digit;
+constexpr parser_interface< digit_parser > digit;
-

Description

+

Description

The decimal digit parser. Matches the full set of Unicode decimal digits; in other words, all Unicode code points with the "Nd" character property. Note that this covers all Unicode scripts, only a few of which are Latin.

diff --git a/doc/html/boost/parser/digit_parser.html b/doc/html/boost/parser/digit_parser.html deleted file mode 100644 index 8f6f5cde..00000000 --- a/doc/html/boost/parser/digit_parser.html +++ /dev/null @@ -1,85 +0,0 @@ - - - -Struct digit_parser - - - - - - - - - -
-PrevUpHomeNext -
-
-
-
-

Struct digit_parser

-

boost::parser::digit_parser

-
-

Synopsis

-
// In header: <boost/parser/parser.hpp>
-
-
-struct digit_parser {
-  // types
-  typedef std::decay_t< T > attribute_t;
-
-  // construct/copy/destruct
-  digit_parser();
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  static constexpr char32_t zero_cps;
-};
-
-

Description

-
-

-digit_parser - public - construct/copy/destruct

-
  1. digit_parser();
-
-
-

-digit_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-
-
-
- -
-
-PrevUpHomeNext -
- - diff --git a/doc/html/boost/parser/directive.html b/doc/html/boost/parser/directive.html index e94916cf..959fea1a 100644 --- a/doc/html/boost/parser/directive.html +++ b/doc/html/boost/parser/directive.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,18 +26,18 @@

Synopsis

template<template< class > class Parser> struct directive { - // public member functions + // public member functions template<typename Parser2> - constexpr auto operator[](parser_interface< Parser2 >) const noexcept; + constexpr auto operator[](parser_interface< Parser2 >) const noexcept; };
-

Description

+

Description

Represents a unparameterized higher-order parser (e.g. omit_parser) as a directive (e.g. omit[other_parser]).

-

-directive public member functions

+

+directive public member functions

  1. template<typename Parser2> 
    -  constexpr auto operator[](parser_interface< Parser2 > rhs) const noexcept;
+ constexpr auto operator[](parser_interface< Parser2 > rhs) const noexcept;
@@ -48,7 +48,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/double_.html b/doc/html/boost/parser/double_.html index 33e0ebe6..f8e8868c 100644 --- a/doc/html/boost/parser/double_.html +++ b/doc/html/boost/parser/double_.html @@ -7,12 +7,12 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< float_parser< double > > double_;
-

Description

+

Description

The double parser. Produces a double attribute.

@@ -36,7 +36,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/enable_optional.html b/doc/html/boost/parser/enable_optional.html index 4c902f59..8f3ccf0b 100644 --- a/doc/html/boost/parser/enable_optional.html +++ b/doc/html/boost/parser/enable_optional.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -25,7 +25,7 @@

Synopsis

constexpr bool enable_optional;
-

Description

+

Description

A variable template that indicates that type T is an optional-like type.

@@ -36,7 +36,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/enable_variant.html b/doc/html/boost/parser/enable_variant.html index 10eaeb0b..8e0ad827 100644 --- a/doc/html/boost/parser/enable_variant.html +++ b/doc/html/boost/parser/enable_variant.html @@ -25,7 +25,7 @@

Synopsis

constexpr bool enable_variant;
-

Description

+

Description

A variable template that indicates that type T is an variant-like type.

diff --git a/doc/html/boost/parser/eoi.html b/doc/html/boost/parser/eoi.html index 61dc8583..55351cf3 100644 --- a/doc/html/boost/parser/eoi.html +++ b/doc/html/boost/parser/eoi.html @@ -23,9 +23,9 @@

Global eoi

Synopsis

// In header: <boost/parser/parser.hpp>
 
-constexpr parser_interface< eoi_parser > eoi;
+constexpr parser_interface< eoi_parser > eoi;
-

Description

+

Description

The end-of-input parser. It matches only the end of input.

diff --git a/doc/html/boost/parser/eoi_parser.html b/doc/html/boost/parser/eoi_parser.html deleted file mode 100644 index 91183afd..00000000 --- a/doc/html/boost/parser/eoi_parser.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -Struct eoi_parser - - - - - - - - - -
-PrevUpHomeNext -
-
-
-
-

Struct eoi_parser

-

boost::parser::eoi_parser

-
-

Synopsis

-
// In header: <boost/parser/parser.hpp>
-
-
-struct eoi_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    unspecified call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-                     Context const &, SkipParser const &, unspecified, 
-                     bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-};
-
-

Description

-
-

-eoi_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  unspecified call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -                   Sentinel last, Context const & context, 
    -                   SkipParser const & skip, unspecified flags, 
    -                   bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-
-
-
- -
-
-PrevUpHomeNext -
- - diff --git a/doc/html/boost/parser/eol.html b/doc/html/boost/parser/eol.html index 57201193..52c962e6 100644 --- a/doc/html/boost/parser/eol.html +++ b/doc/html/boost/parser/eol.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< ws_parser< true, false > > eol;
-

Description

+

Description

The end-of-line parser. This matches "\r\n", or any one of the line break code points from the Unicode Line Break Algorithm, described in https://unicode.org/reports/tr14. Produces no attribute.

@@ -36,7 +36,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/eps.html b/doc/html/boost/parser/eps.html index 72c6f0a1..449f0afd 100644 --- a/doc/html/boost/parser/eps.html +++ b/doc/html/boost/parser/eps.html @@ -25,7 +25,7 @@

Synopsis

unspecified eps;
-

Description

+

Description

The epsilon parser. This matches anything, and consumes no input. If used with an optional predicate, like eps(pred), it matches iff pred(ctx) evaluates to true, where ctx is the parser context.

diff --git a/doc/html/boost/parser/eps_parser.html b/doc/html/boost/parser/eps_parser.html index e113a8b2..1aee7155 100644 --- a/doc/html/boost/parser/eps_parser.html +++ b/doc/html/boost/parser/eps_parser.html @@ -5,14 +5,14 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,53 +21,14 @@

Struct template eps_parser

boost::parser::eps_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename Predicate> 
 struct eps_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    unspecified call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-                     Context const &, SkipParser const &, unspecified, 
-                     bool &) const noexcept;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-  template<typename Predicate2> 
-    constexpr auto operator()(Predicate2) const noexcept;
-
-  // public data members
-  Predicate pred_;
 };
-

Description

+

Description

Matches anything, and consumes no input. If Predicate is anything other than detail::nope (which it is by default), and pred_(ctx) evaluates to false, where ctx is the parser context, the parse fails.

-
-

-eps_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  unspecified call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -                   Sentinel last, Context const & context, 
    -                   SkipParser const & skip, unspecified flags, 
    -                   bool & success) const noexcept;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
  5. -
    template<typename Predicate2> 
    -  constexpr auto operator()(Predicate2 pred) const noexcept;
    -

    Returns a parser_interface containing an eps_parser that will fail if pred evaluates to false.

    -
  6. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/error_handler_result.html b/doc/html/boost/parser/error_handler_result.html index 72e62e5b..3a85455a 100644 --- a/doc/html/boost/parser/error_handler_result.html +++ b/doc/html/boost/parser/error_handler_result.html @@ -27,7 +27,7 @@

Synopsis

enum error_handler_result { fail, rethrow };
-

Description

+

Description

The possible actions to take when a parse error is handled by an error handler.

rethrow
diff --git a/doc/html/boost/parser/expect_parser.html b/doc/html/boost/parser/expect_parser.html index 6fb30510..917fc626 100644 --- a/doc/html/boost/parser/expect_parser.html +++ b/doc/html/boost/parser/expect_parser.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,46 +21,14 @@

Struct template expect_parser

boost::parser::expect_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename Parser, bool FailOnMatch> 
 struct expect_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    unspecified call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-                     Context const &, SkipParser const &, unspecified, 
-                     bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  Parser parser_;
 };
-

Description

+

Description

Applies the given parser p of type Parser, producing no attributes and consuming no input. The parse succeeds iff p's success is unequal to FailOnMatch.

-
-

-expect_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  unspecified call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -                   Sentinel last, Context const & context, 
    -                   SkipParser const & skip, unspecified flags, 
    -                   bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/find_line_end.html b/doc/html/boost/parser/find_line_end.html index 2510f93a..41056c46 100644 --- a/doc/html/boost/parser/find_line_end.html +++ b/doc/html/boost/parser/find_line_end.html @@ -27,7 +27,7 @@

Synopsis

template<typename Iter, typename Sentinel> Iter find_line_end(Iter it, Sentinel last);
-

Description

+

Description

Returns the iterator to the end of the line in which it is found.

diff --git a/doc/html/boost/parser/find_line_position.html b/doc/html/boost/parser/find_line_position.html index 9f1043bc..42c3afc2 100644 --- a/doc/html/boost/parser/find_line_position.html +++ b/doc/html/boost/parser/find_line_position.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -27,7 +27,7 @@

Synopsis

template<typename Iter> line_position< Iter > find_line_position(Iter first, Iter it);
-

Description

+

Description

Returns the line_position for it, counting lines from the beginning of the input first.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/float_.html b/doc/html/boost/parser/float_.html index 2739c1fa..26480d34 100644 --- a/doc/html/boost/parser/float_.html +++ b/doc/html/boost/parser/float_.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< float_parser< float > > float_;
-

Description

+

Description

The float parser. Produces a float attribute.

diff --git a/doc/html/boost/parser/float_parser.html b/doc/html/boost/parser/float_parser.html index 99779e12..d78808b3 100644 --- a/doc/html/boost/parser/float_parser.html +++ b/doc/html/boost/parser/float_parser.html @@ -5,14 +5,14 @@ - + - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,50 +21,14 @@

Struct template float_parser

boost::parser::float_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename T> 
 struct float_parser {
-  // construct/copy/destruct
-  float_parser();
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    T call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-           Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
 };
-

Description

+

Description

Matches a floating point number, producing an attribute of type T.

-
-

-float_parser - public - construct/copy/destruct

-
  1. float_parser();
-
-
-

-float_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  T call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -         Sentinel last, Context const & context, SkipParser const & skip, 
    -         unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/get.html b/doc/html/boost/parser/get.html index 8db327ca..38a6a1ef 100644 --- a/doc/html/boost/parser/get.html +++ b/doc/html/boost/parser/get.html @@ -27,7 +27,7 @@

Synopsis

template<typename T, typename U, U I> constexpr decltype(auto) get(T && x, integral_constant< U, I > i);
-

Description

+

Description

An accessor that returns a reference to the I-th data member of an aggregate struct or boost::parser::tuple.

diff --git a/doc/html/boost/parser/hex.html b/doc/html/boost/parser/hex.html index fffbf195..34eb26ac 100644 --- a/doc/html/boost/parser/hex.html +++ b/doc/html/boost/parser/hex.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< uint_parser< unsigned int, 16 > > hex;
-

Description

+

Description

The hexadecimal unsigned integer parser. Produces an unsigned int attribute. To parse a particular value x, use hex(x).

diff --git a/doc/html/boost/parser/hex_digit.html b/doc/html/boost/parser/hex_digit.html index 77fafdaa..c9623131 100644 --- a/doc/html/boost/parser/hex_digit.html +++ b/doc/html/boost/parser/hex_digit.html @@ -25,7 +25,7 @@

Synopsis

unspecified hex_digit;
-

Description

+

Description

The hexidecimal digit parser. Matches the full set of Unicode hexidecimal digits (upper or lower case); in other words, all Unicode code points with the "Hex_Digit" character property.

diff --git a/doc/html/boost/parser/if_.html b/doc/html/boost/parser/if_.html index b84ee0da..16a047e2 100644 --- a/doc/html/boost/parser/if_.html +++ b/doc/html/boost/parser/if_.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,7 +26,7 @@

Synopsis

template<typename Predicate> constexpr auto if_(Predicate pred);
-

Description

+

Description

Returns an if_directive that fails if the given predicate pred is false, and otherwise, applies another parser. For instance, in if_(pred)[p], p is only applied if pred is true.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/if_directive.html b/doc/html/boost/parser/if_directive.html index 30282d84..18bf2d28 100644 --- a/doc/html/boost/parser/if_directive.html +++ b/doc/html/boost/parser/if_directive.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,21 +26,21 @@

Synopsis

template<typename Predicate> struct if_directive { - // public member functions + // public member functions template<typename Parser2> - constexpr auto operator[](parser_interface< Parser2 >) const noexcept; + constexpr auto operator[](parser_interface< Parser2 >) const noexcept; // public data members Predicate pred_; };
-

Description

+

Description

Represents a sequence parser, the first parser of which is an epsilon_parser with predicate, as a directive (e.g. if_(pred)[p]).

-

-if_directive public member functions

+

+if_directive public member functions

  1. template<typename Parser2> 
    -  constexpr auto operator[](parser_interface< Parser2 > rhs) const noexcept;
+ constexpr auto operator[](parser_interface< Parser2 > rhs) const noexcept;
@@ -51,7 +51,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/int_.html b/doc/html/boost/parser/int_.html index cb9bf5cd..379f6ae8 100644 --- a/doc/html/boost/parser/int_.html +++ b/doc/html/boost/parser/int_.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< int_parser< int > > int_;
-

Description

+

Description

The int parser. Produces an int attribute. To parse a particular value x, use int_(x).

diff --git a/doc/html/boost/parser/int_parser.html b/doc/html/boost/parser/int_parser.html index c7ac9f98..b4faed48 100644 --- a/doc/html/boost/parser/int_parser.html +++ b/doc/html/boost/parser/int_parser.html @@ -5,14 +5,14 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,65 +21,15 @@

Struct template int_parser

boost::parser::int_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
-template<typename T, int Radix, int MinDigits, int MaxDigits, 
-         typename Expected> 
+template<typename T, int Radix = 10, int MinDigits = 1, int MaxDigits = -1, 
+         typename Expected = detail::nope> 
 struct int_parser {
-  // construct/copy/destruct
-  int_parser();
-  explicit int_parser(Expected);
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    T call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-           Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-  template<typename Expected2> 
-    constexpr auto operator()(Expected2) const noexcept;
-
-  // public data members
-  Expected expected_;
 };
-

Description

+

Description

Matches a signed number of radix Radix, of at least MinDigits and at most MaxDigits, producing an attribute of type T. Fails on any other input. The parse will also fail if Expected is anything but detail::nope (which it is by default), and the produced attribute is not equal to expected_. Radix must be one of 2, 8, 10, or 16.

-
-

-int_parser - public - construct/copy/destruct

-
    -
  1. int_parser();
  2. -
  3. explicit int_parser(Expected expected);
  4. -
-
-
-

-int_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  T call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -         Sentinel last, Context const & context, SkipParser const & skip, 
    -         unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
  5. -
    template<typename Expected2> 
    -  constexpr auto operator()(Expected2 expected) const noexcept;
    -

    Returns a parser_interface containing an int_parser that matches the exact value expected.

    -
  6. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/integral_constant.html b/doc/html/boost/parser/integral_constant.html index 43a6f398..652c5c24 100644 --- a/doc/html/boost/parser/integral_constant.html +++ b/doc/html/boost/parser/integral_constant.html @@ -26,7 +26,7 @@

Synopsis

typedef hana::integral_constant< T, I > integral_constant;
-

Description

+

Description

A template alias that is boost::hana::integral_constant<T, I> unless BOOST_PARSER_DISABLE_HANA_TUPLE is defined, in which case it is std::integral_constant<T, I>.

diff --git a/doc/html/boost/parser/lexeme.html b/doc/html/boost/parser/lexeme.html index 23ba6e7e..55ecbb2c 100644 --- a/doc/html/boost/parser/lexeme.html +++ b/doc/html/boost/parser/lexeme.html @@ -25,7 +25,7 @@

Synopsis

constexpr directive< lexeme_parser > lexeme;
-

Description

+

Description

The lexeme directive, whose operator[] returns a parser_interface<lexeme_parser<P>> from a given parser of type parser_interface<P>.

diff --git a/doc/html/boost/parser/lexeme_parser.html b/doc/html/boost/parser/lexeme_parser.html index cd066ad3..5d51e90b 100644 --- a/doc/html/boost/parser/lexeme_parser.html +++ b/doc/html/boost/parser/lexeme_parser.html @@ -5,14 +5,14 @@ - + - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,44 +21,14 @@

Struct template lexeme_parser

boost::parser::lexeme_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename Parser> 
 struct lexeme_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  Parser parser_;
 };
-

Description

+

Description

Applies the given parser p of type Parser, disabling the current skipper in use, if any. The parse succeeds iff p succeeds. The attribute produced is the type of attribute produced by Parser.

-
-

-lexeme_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/line_position.html b/doc/html/boost/parser/line_position.html index 76a5d2a7..9cfd0fb3 100644 --- a/doc/html/boost/parser/line_position.html +++ b/doc/html/boost/parser/line_position.html @@ -32,7 +32,7 @@

Synopsis

int64_t column_number; };
-

Description

+

Description

A position within a line, consisting of an iterator to the start of the line, the line number, and the column number.

diff --git a/doc/html/boost/parser/lit_idm26750.html b/doc/html/boost/parser/lit_idm32186.html similarity index 89% rename from doc/html/boost/parser/lit_idm26750.html rename to doc/html/boost/parser/lit_idm32186.html index 5d0232a1..baa3d46e 100644 --- a/doc/html/boost/parser/lit_idm26750.html +++ b/doc/html/boost/parser/lit_idm32186.html @@ -7,15 +7,15 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function lit

boost::parser::lit

@@ -26,7 +26,7 @@

Synopsis

constexpr auto lit(char c);
-

Description

+

Description

Returns a literal code point parser that produces no attribute.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/lit_idm26756.html b/doc/html/boost/parser/lit_idm32192.html similarity index 78% rename from doc/html/boost/parser/lit_idm26756.html rename to doc/html/boost/parser/lit_idm32192.html index 19d5d431..b2cdec34 100644 --- a/doc/html/boost/parser/lit_idm26756.html +++ b/doc/html/boost/parser/lit_idm32192.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function lit

boost::parser::lit

@@ -26,7 +26,7 @@

Synopsis

constexpr auto lit(char8_t c);
-

Description

+

Description

Returns a literal code point parser that produces no attribute.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/lit_idm26762.html b/doc/html/boost/parser/lit_idm32198.html similarity index 89% rename from doc/html/boost/parser/lit_idm26762.html rename to doc/html/boost/parser/lit_idm32198.html index 3b0dc82f..eb2d1a11 100644 --- a/doc/html/boost/parser/lit_idm26762.html +++ b/doc/html/boost/parser/lit_idm32198.html @@ -6,16 +6,16 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function lit

boost::parser::lit

@@ -26,7 +26,7 @@

Synopsis

constexpr auto lit(char32_t c);
-

Description

+

Description

Returns a literal code point parser that produces no attribute.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/lit_idm26783.html b/doc/html/boost/parser/lit_idm32214.html similarity index 83% rename from doc/html/boost/parser/lit_idm26783.html rename to doc/html/boost/parser/lit_idm32214.html index eda29bc3..95f9a4ad 100644 --- a/doc/html/boost/parser/lit_idm26783.html +++ b/doc/html/boost/parser/lit_idm32214.html @@ -15,7 +15,7 @@ PrevUpHomeNext
-
+

Function template lit

boost::parser::lit

@@ -24,9 +24,9 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R> constexpr auto lit(R && str);
+template<parsable_range_like R> constexpr auto lit(R && str);
-

Description

+

Description

Returns a parser that matches str that produces no attribute.

diff --git a/doc/html/boost/parser/literals/operator_c_idm28413.html b/doc/html/boost/parser/literals/operator_c_idm34395.html similarity index 96% rename from doc/html/boost/parser/literals/operator_c_idm28413.html rename to doc/html/boost/parser/literals/operator_c_idm34395.html index 4e868481..03dd3c18 100644 --- a/doc/html/boost/parser/literals/operator_c_idm28413.html +++ b/doc/html/boost/parser/literals/operator_c_idm34395.html @@ -15,7 +15,7 @@ PrevUpHomeNext
-
+

Function template operator""_c

boost::parser::literals::operator""_c

@@ -26,7 +26,7 @@

Synopsis

template<char... chars> constexpr auto operator""_c();
-

Description

+

Description

A literal that can be used to concisely name parser::llong integral constants.

diff --git a/doc/html/boost/parser/literals/operator_l_idm26070.html b/doc/html/boost/parser/literals/operator_l_idm31631.html similarity index 90% rename from doc/html/boost/parser/literals/operator_l_idm26070.html rename to doc/html/boost/parser/literals/operator_l_idm31631.html index 25091814..5a9078e4 100644 --- a/doc/html/boost/parser/literals/operator_l_idm26070.html +++ b/doc/html/boost/parser/literals/operator_l_idm31631.html @@ -7,15 +7,15 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_l

boost::parser::literals::operator""_l

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_l(char c);
-

Description

+

Description

Returns a literal parser equivalent to lit(c).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_l_idm26077.html b/doc/html/boost/parser/literals/operator_l_idm31638.html similarity index 83% rename from doc/html/boost/parser/literals/operator_l_idm26077.html rename to doc/html/boost/parser/literals/operator_l_idm31638.html index 8a2b1808..c41d727a 100644 --- a/doc/html/boost/parser/literals/operator_l_idm26077.html +++ b/doc/html/boost/parser/literals/operator_l_idm31638.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_l

boost::parser::literals::operator""_l

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_l(char8_t c);
-

Description

+

Description

Returns a literal parser equivalent to lit(c).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_l_idm26084.html b/doc/html/boost/parser/literals/operator_l_idm31645.html similarity index 83% rename from doc/html/boost/parser/literals/operator_l_idm26084.html rename to doc/html/boost/parser/literals/operator_l_idm31645.html index 21d9d511..828d4d52 100644 --- a/doc/html/boost/parser/literals/operator_l_idm26084.html +++ b/doc/html/boost/parser/literals/operator_l_idm31645.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_l

boost::parser::literals::operator""_l

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_l(char32_t c);
-

Description

+

Description

Returns a literal parser equivalent to lit(c).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_l_idm26091.html b/doc/html/boost/parser/literals/operator_l_idm31652.html similarity index 84% rename from doc/html/boost/parser/literals/operator_l_idm26091.html rename to doc/html/boost/parser/literals/operator_l_idm31652.html index bfda31b3..cdfa84ae 100644 --- a/doc/html/boost/parser/literals/operator_l_idm26091.html +++ b/doc/html/boost/parser/literals/operator_l_idm31652.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_l

boost::parser::literals::operator""_l

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_l(char const * str, std::size_t);
-

Description

+

Description

Returns a literal parser equivalent to lit(str).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_l_idm26100.html b/doc/html/boost/parser/literals/operator_l_idm31661.html similarity index 84% rename from doc/html/boost/parser/literals/operator_l_idm26100.html rename to doc/html/boost/parser/literals/operator_l_idm31661.html index 05a52489..28d274d2 100644 --- a/doc/html/boost/parser/literals/operator_l_idm26100.html +++ b/doc/html/boost/parser/literals/operator_l_idm31661.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_l

boost::parser::literals::operator""_l

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_l(char8_t const * str, std::size_t);
-

Description

+

Description

Returns a literal parser equivalent to lit(str).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_l_idm26109.html b/doc/html/boost/parser/literals/operator_l_idm31670.html similarity index 84% rename from doc/html/boost/parser/literals/operator_l_idm26109.html rename to doc/html/boost/parser/literals/operator_l_idm31670.html index 8682d949..10147d1b 100644 --- a/doc/html/boost/parser/literals/operator_l_idm26109.html +++ b/doc/html/boost/parser/literals/operator_l_idm31670.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_l

boost::parser::literals::operator""_l

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_l(char32_t const * str, std::size_t);
-

Description

+

Description

Returns a literal parser equivalent to lit(str).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_p_idm26118.html b/doc/html/boost/parser/literals/operator_p_idm31679.html similarity index 83% rename from doc/html/boost/parser/literals/operator_p_idm26118.html rename to doc/html/boost/parser/literals/operator_p_idm31679.html index 3da695cd..53e98eb6 100644 --- a/doc/html/boost/parser/literals/operator_p_idm26118.html +++ b/doc/html/boost/parser/literals/operator_p_idm31679.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_p

boost::parser::literals::operator""_p

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_p(char c);
-

Description

+

Description

Returns a character parser equivalent to char_(c).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_p_idm26125.html b/doc/html/boost/parser/literals/operator_p_idm31686.html similarity index 83% rename from doc/html/boost/parser/literals/operator_p_idm26125.html rename to doc/html/boost/parser/literals/operator_p_idm31686.html index 00f6316e..86aeb1d2 100644 --- a/doc/html/boost/parser/literals/operator_p_idm26125.html +++ b/doc/html/boost/parser/literals/operator_p_idm31686.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_p

boost::parser::literals::operator""_p

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_p(char8_t c);
-

Description

+

Description

Returns a character parser equivalent to char_(c).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_p_idm26132.html b/doc/html/boost/parser/literals/operator_p_idm31693.html similarity index 83% rename from doc/html/boost/parser/literals/operator_p_idm26132.html rename to doc/html/boost/parser/literals/operator_p_idm31693.html index c634cfde..6f3fb533 100644 --- a/doc/html/boost/parser/literals/operator_p_idm26132.html +++ b/doc/html/boost/parser/literals/operator_p_idm31693.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_p

boost::parser::literals::operator""_p

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_p(char32_t c);
-

Description

+

Description

Returns a character parser equivalent to char_(c).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_p_idm26139.html b/doc/html/boost/parser/literals/operator_p_idm31700.html similarity index 84% rename from doc/html/boost/parser/literals/operator_p_idm26139.html rename to doc/html/boost/parser/literals/operator_p_idm31700.html index ae0812df..9a8d062d 100644 --- a/doc/html/boost/parser/literals/operator_p_idm26139.html +++ b/doc/html/boost/parser/literals/operator_p_idm31700.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_p

boost::parser::literals::operator""_p

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_p(char const * str, std::size_t);
-

Description

+

Description

Returns a string parser equivalent to string(str).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_p_idm26148.html b/doc/html/boost/parser/literals/operator_p_idm31709.html similarity index 84% rename from doc/html/boost/parser/literals/operator_p_idm26148.html rename to doc/html/boost/parser/literals/operator_p_idm31709.html index be330d2b..d8ecca3b 100644 --- a/doc/html/boost/parser/literals/operator_p_idm26148.html +++ b/doc/html/boost/parser/literals/operator_p_idm31709.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_p

boost::parser::literals::operator""_p

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_p(char8_t const * str, std::size_t);
-

Description

+

Description

Returns a string parser equivalent to string(str).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/literals/operator_p_idm26157.html b/doc/html/boost/parser/literals/operator_p_idm31718.html similarity index 83% rename from doc/html/boost/parser/literals/operator_p_idm26157.html rename to doc/html/boost/parser/literals/operator_p_idm31718.html index eed0aef0..6096bdc6 100644 --- a/doc/html/boost/parser/literals/operator_p_idm26157.html +++ b/doc/html/boost/parser/literals/operator_p_idm31718.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function operator""_p

boost::parser::literals::operator""_p

@@ -26,7 +26,7 @@

Synopsis

constexpr auto operator""_p(char32_t const * str, std::size_t);
-

Description

+

Description

Returns a string parser equivalent to string(str).

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/llong.html b/doc/html/boost/parser/llong.html index 0c2d23eb..251157c3 100644 --- a/doc/html/boost/parser/llong.html +++ b/doc/html/boost/parser/llong.html @@ -26,7 +26,7 @@

Synopsis

typedef integral_constant< long long, I > llong;
-

Description

+

Description

A template alias that is boost::hana::llong<I> unless BOOST_PARSER_DISABLE_HANA_TUPLE is defined, in which case it is std::integral_constant<long long, I>.

diff --git a/doc/html/boost/parser/long_.html b/doc/html/boost/parser/long_.html index 85ef6129..f9942772 100644 --- a/doc/html/boost/parser/long_.html +++ b/doc/html/boost/parser/long_.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< int_parser< long > > long_;
-

Description

+

Description

The long parser. Produces a long attribute. To parse a particular value x, use long_(x).

diff --git a/doc/html/boost/parser/long_long.html b/doc/html/boost/parser/long_long.html index 9457eee7..d253ac89 100644 --- a/doc/html/boost/parser/long_long.html +++ b/doc/html/boost/parser/long_long.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< int_parser< long long > > long_long;
-

Description

+

Description

The long long parser. Produces a long long attribute. To parse a particular value x, use long_long(x).

diff --git a/doc/html/boost/parser/lower.html b/doc/html/boost/parser/lower.html index 4ded0039..5a314dc9 100644 --- a/doc/html/boost/parser/lower.html +++ b/doc/html/boost/parser/lower.html @@ -25,7 +25,7 @@

Synopsis

unspecified lower;
-

Description

+

Description

The lower case character parser. Matches the full set of Unicode lower case code points (class "Ll").

diff --git a/doc/html/boost/parser/make_subrange.html b/doc/html/boost/parser/make_subrange.html index 357cad75..cb6c4913 100644 --- a/doc/html/boost/parser/make_subrange.html +++ b/doc/html/boost/parser/make_subrange.html @@ -24,10 +24,10 @@

Synopsis

// In header: <boost/parser/subrange.hpp>
 
 
-template<typename I, typename S = I> 
+template<std::forward_iterator I, std::sentinel_for< I > S = I> 
   constexpr subrange< I, S > make_subrange(I first, S last);
-

Description

+

Description

Makes a subrange<I, S> from an I and an S.

diff --git a/doc/html/boost/parser/merge.html b/doc/html/boost/parser/merge.html index 98b93437..75c90cae 100644 --- a/doc/html/boost/parser/merge.html +++ b/doc/html/boost/parser/merge.html @@ -25,7 +25,7 @@

Synopsis

constexpr merge_directive merge;
-

Description

+

Description

The merge_directive, whose operator[] returns a parser_interface<P2>, from a given parser of type parser_interface<P>, where P is a seq_parser. P2 is the same as P, except that its CombiningGroups template parameter is replaced with a tag type that causes the subparser's attributes to be merged into a single attribute.

diff --git a/doc/html/boost/parser/merge_directive.html b/doc/html/boost/parser/merge_directive.html index 49d74ded..6f019e8a 100644 --- a/doc/html/boost/parser/merge_directive.html +++ b/doc/html/boost/parser/merge_directive.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,22 +26,22 @@

Synopsis

struct merge_directive { - // public member functions + // public member functions template<typename ParserTuple, typename BacktrackingTuple, typename CombiningGroups> constexpr auto - operator[](parser_interface< seq_parser< ParserTuple, BacktrackingTuple, CombiningGroups > >) const noexcept; + operator[](parser_interface< seq_parser< ParserTuple, BacktrackingTuple, CombiningGroups > >) const noexcept; };
-

Description

+

Description

A directive type that can only be used on sequence parsers, that forces the merge of all the sequence_parser's subparser's attributes into a single attribute.

-

-merge_directive public member functions

+

+merge_directive public member functions

  1. template<typename ParserTuple, typename BacktrackingTuple, 
              typename CombiningGroups> 
       constexpr auto 
    -  operator[](parser_interface< seq_parser< ParserTuple, BacktrackingTuple, CombiningGroups > > rhs) const noexcept;
+ operator[](parser_interface< seq_parser< ParserTuple, BacktrackingTuple, CombiningGroups > > rhs) const noexcept;
@@ -52,7 +52,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/no_case.html b/doc/html/boost/parser/no_case.html index cb5a2a9a..c513d409 100644 --- a/doc/html/boost/parser/no_case.html +++ b/doc/html/boost/parser/no_case.html @@ -25,7 +25,7 @@

Synopsis

constexpr directive< no_case_parser > no_case;
-

Description

+

Description

The no_case directive, whose operator[] returns a parser_interface<no_case_parser<P>> from a given parser of type parser_interface<P>.

diff --git a/doc/html/boost/parser/no_case_parser.html b/doc/html/boost/parser/no_case_parser.html index 870c9037..7a692ad2 100644 --- a/doc/html/boost/parser/no_case_parser.html +++ b/doc/html/boost/parser/no_case_parser.html @@ -5,14 +5,14 @@ - - - + + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,44 +21,14 @@

Struct template no_case_parser

boost::parser::no_case_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename Parser> 
 struct no_case_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  Parser parser_;
 };
-

Description

+

Description

Applies the given parser p of type Parser, enabling case-insensitive matching, based on Unicode case folding. The parse succeeds iff p succeeds. The attribute produced is the type of attribute produced by Parser.

-
-

-no_case_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context_, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context_, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/none.html b/doc/html/boost/parser/none.html index ed792d4f..9b4e73d7 100644 --- a/doc/html/boost/parser/none.html +++ b/doc/html/boost/parser/none.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,117 +26,117 @@

Synopsis

struct none { // construct/copy/destruct - none() = default; - template<typename T> none(T const &); - template<typename T> none & operator=(T const &); + none() = default; + template<typename T> none(T const &); + template<typename T> none & operator=(T const &); - // public member functions - template<typename T> operator T() const; - none operator+() const; - none operator-() const; - none operator*() const; - none operator~() const; - none operator&() const; - none operator!() const; - none operator++(); - none & operator++(int); - none operator--(); - none operator--(int); - template<typename T> none operator<<(T const &) const; - template<typename T> none operator>>(T const &) const; - template<typename T> none operator*(T const &) const; - template<typename T> none operator/(T const &) const; - template<typename T> none operator%(T const &) const; - template<typename T> none operator+(T const &) const; - template<typename T> none operator-(T const &) const; - template<typename T> none operator<(T const &) const; - template<typename T> none operator>(T const &) const; - template<typename T> none operator<=(T const &) const; - template<typename T> none operator>=(T const &) const; - template<typename T> none operator==(T const &) const; - template<typename T> none operator!=(T const &) const; - template<typename T> none operator||(T const &) const; - template<typename T> none operator&&(T const &) const; - template<typename T> none operator&(T const &) const; - template<typename T> none operator|(T const &) const; - template<typename T> none operator^(T const &) const; - template<typename T> none operator,(T const &) const; - template<typename T> none operator->*(T const &) const; - template<typename T> none operator<<=(T const &); - template<typename T> none operator>>=(T const &); - template<typename T> none operator*=(T const &); - template<typename T> none operator/=(T const &); - template<typename T> none operator%=(T const &); - template<typename T> none operator+=(T const &); - template<typename T> none operator-=(T const &); - template<typename T> none operator&=(T const &); - template<typename T> none operator|=(T const &); - template<typename T> none operator^=(T const &); - template<typename T> none operator[](T const &) const; - template<typename... Args> none operator()(Args const &) const; - void fail() const; + // public member functions + template<typename T> operator T() const; + none operator+() const; + none operator-() const; + none operator*() const; + none operator~() const; + none operator&() const; + none operator!() const; + none operator++(); + none & operator++(int); + none operator--(); + none operator--(int); + template<typename T> none operator<<(T const &) const; + template<typename T> none operator>>(T const &) const; + template<typename T> none operator*(T const &) const; + template<typename T> none operator/(T const &) const; + template<typename T> none operator%(T const &) const; + template<typename T> none operator+(T const &) const; + template<typename T> none operator-(T const &) const; + template<typename T> none operator<(T const &) const; + template<typename T> none operator>(T const &) const; + template<typename T> none operator<=(T const &) const; + template<typename T> none operator>=(T const &) const; + template<typename T> none operator==(T const &) const; + template<typename T> none operator!=(T const &) const; + template<typename T> none operator||(T const &) const; + template<typename T> none operator&&(T const &) const; + template<typename T> none operator&(T const &) const; + template<typename T> none operator|(T const &) const; + template<typename T> none operator^(T const &) const; + template<typename T> none operator,(T const &) const; + template<typename T> none operator->*(T const &) const; + template<typename T> none operator<<=(T const &); + template<typename T> none operator>>=(T const &); + template<typename T> none operator*=(T const &); + template<typename T> none operator/=(T const &); + template<typename T> none operator%=(T const &); + template<typename T> none operator+=(T const &); + template<typename T> none operator-=(T const &); + template<typename T> none operator&=(T const &); + template<typename T> none operator|=(T const &); + template<typename T> none operator^=(T const &); + template<typename T> none operator[](T const &) const; + template<typename... Args> none operator()(Args const &) const; + void fail() const; };
-

Description

+

Description

-

+

none public construct/copy/destruct

    -
  1. none() = default;
  2. -
  3. template<typename T> none(T const &);
  4. -
  5. template<typename T> none & operator=(T const &);
  6. +
  7. none() = default;
  8. +
  9. template<typename T> none(T const &);
  10. +
  11. template<typename T> none & operator=(T const &);
-

-none public member functions

+

+none public member functions

    -
  1. template<typename T> operator T() const;
  2. -
  3. none operator+() const;
  4. -
  5. none operator-() const;
  6. -
  7. none operator*() const;
  8. -
  9. none operator~() const;
  10. -
  11. none operator&() const;
  12. -
  13. none operator!() const;
  14. -
  15. none operator++();
  16. -
  17. none & operator++(int);
  18. -
  19. none operator--();
  20. -
  21. none operator--(int);
  22. -
  23. template<typename T> none operator<<(T const &) const;
  24. -
  25. template<typename T> none operator>>(T const &) const;
  26. -
  27. template<typename T> none operator*(T const &) const;
  28. -
  29. template<typename T> none operator/(T const &) const;
  30. -
  31. template<typename T> none operator%(T const &) const;
  32. -
  33. template<typename T> none operator+(T const &) const;
  34. -
  35. template<typename T> none operator-(T const &) const;
  36. -
  37. template<typename T> none operator<(T const &) const;
  38. -
  39. template<typename T> none operator>(T const &) const;
  40. -
  41. template<typename T> none operator<=(T const &) const;
  42. -
  43. template<typename T> none operator>=(T const &) const;
  44. -
  45. template<typename T> none operator==(T const &) const;
  46. -
  47. template<typename T> none operator!=(T const &) const;
  48. -
  49. template<typename T> none operator||(T const &) const;
  50. -
  51. template<typename T> none operator&&(T const &) const;
  52. -
  53. template<typename T> none operator&(T const &) const;
  54. -
  55. template<typename T> none operator|(T const &) const;
  56. -
  57. template<typename T> none operator^(T const &) const;
  58. -
  59. template<typename T> none operator,(T const &) const;
  60. -
  61. template<typename T> none operator->*(T const &) const;
  62. -
  63. template<typename T> none operator<<=(T const &);
  64. -
  65. template<typename T> none operator>>=(T const &);
  66. -
  67. template<typename T> none operator*=(T const &);
  68. -
  69. template<typename T> none operator/=(T const &);
  70. -
  71. template<typename T> none operator%=(T const &);
  72. -
  73. template<typename T> none operator+=(T const &);
  74. -
  75. template<typename T> none operator-=(T const &);
  76. -
  77. template<typename T> none operator&=(T const &);
  78. -
  79. template<typename T> none operator|=(T const &);
  80. -
  81. template<typename T> none operator^=(T const &);
  82. -
  83. template<typename T> none operator[](T const &) const;
  84. -
  85. template<typename... Args> none operator()(Args const & ...) const;
  86. -
  87. void fail() const;
  88. +
  89. template<typename T> operator T() const;
  90. +
  91. none operator+() const;
  92. +
  93. none operator-() const;
  94. +
  95. none operator*() const;
  96. +
  97. none operator~() const;
  98. +
  99. none operator&() const;
  100. +
  101. none operator!() const;
  102. +
  103. none operator++();
  104. +
  105. none & operator++(int);
  106. +
  107. none operator--();
  108. +
  109. none operator--(int);
  110. +
  111. template<typename T> none operator<<(T const &) const;
  112. +
  113. template<typename T> none operator>>(T const &) const;
  114. +
  115. template<typename T> none operator*(T const &) const;
  116. +
  117. template<typename T> none operator/(T const &) const;
  118. +
  119. template<typename T> none operator%(T const &) const;
  120. +
  121. template<typename T> none operator+(T const &) const;
  122. +
  123. template<typename T> none operator-(T const &) const;
  124. +
  125. template<typename T> none operator<(T const &) const;
  126. +
  127. template<typename T> none operator>(T const &) const;
  128. +
  129. template<typename T> none operator<=(T const &) const;
  130. +
  131. template<typename T> none operator>=(T const &) const;
  132. +
  133. template<typename T> none operator==(T const &) const;
  134. +
  135. template<typename T> none operator!=(T const &) const;
  136. +
  137. template<typename T> none operator||(T const &) const;
  138. +
  139. template<typename T> none operator&&(T const &) const;
  140. +
  141. template<typename T> none operator&(T const &) const;
  142. +
  143. template<typename T> none operator|(T const &) const;
  144. +
  145. template<typename T> none operator^(T const &) const;
  146. +
  147. template<typename T> none operator,(T const &) const;
  148. +
  149. template<typename T> none operator->*(T const &) const;
  150. +
  151. template<typename T> none operator<<=(T const &);
  152. +
  153. template<typename T> none operator>>=(T const &);
  154. +
  155. template<typename T> none operator*=(T const &);
  156. +
  157. template<typename T> none operator/=(T const &);
  158. +
  159. template<typename T> none operator%=(T const &);
  160. +
  161. template<typename T> none operator+=(T const &);
  162. +
  163. template<typename T> none operator-=(T const &);
  164. +
  165. template<typename T> none operator&=(T const &);
  166. +
  167. template<typename T> none operator|=(T const &);
  168. +
  169. template<typename T> none operator^=(T const &);
  170. +
  171. template<typename T> none operator[](T const &) const;
  172. +
  173. template<typename... Args> none operator()(Args const & ...) const;
  174. +
  175. void fail() const;
@@ -148,7 +148,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/null_sentinel_t.html b/doc/html/boost/parser/null_sentinel_t.html index b1927cd4..228a8807 100644 --- a/doc/html/boost/parser/null_sentinel_t.html +++ b/doc/html/boost/parser/null_sentinel_t.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,7 +26,7 @@

Synopsis

typedef unspecified null_sentinel_t;
-

Description

+

Description

A sentinel type that compares equal to a pointer to a character value type, iff the pointer is null.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/oct.html b/doc/html/boost/parser/oct.html index 0bf03a24..0e147a5e 100644 --- a/doc/html/boost/parser/oct.html +++ b/doc/html/boost/parser/oct.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< uint_parser< unsigned int, 8 > > oct;
-

Description

+

Description

The octal unsigned integer parser. Produces an unsigned int attribute. To parse a particular value x, use oct(x).

diff --git a/doc/html/boost/parser/omit.html b/doc/html/boost/parser/omit.html index 1578f30e..5f80fb68 100644 --- a/doc/html/boost/parser/omit.html +++ b/doc/html/boost/parser/omit.html @@ -25,7 +25,7 @@

Synopsis

constexpr directive< omit_parser > omit;
-

Description

+

Description

The omit directive, whose operator[] returns a parser_interface<omit_parser<P>> from a given parser of type parser_interface<P>.

diff --git a/doc/html/boost/parser/omit_parser.html b/doc/html/boost/parser/omit_parser.html index 1495782e..7f911b37 100644 --- a/doc/html/boost/parser/omit_parser.html +++ b/doc/html/boost/parser/omit_parser.html @@ -5,14 +5,14 @@ - - - + + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,46 +21,14 @@

Struct template omit_parser

boost::parser::omit_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename Parser> 
 struct omit_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    unspecified call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-                     Context const &, SkipParser const &, unspecified, 
-                     bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  Parser parser_;
 };
-

Description

+

Description

Applies the given parser p of type Parser. This parser produces no attribute, and suppresses the production of any attributes that would otherwise be produced by p. The parse succeeds iff p succeeds.

-
-

-omit_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  unspecified call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -                   Sentinel last, Context const & context, 
    -                   SkipParser const & skip, unspecified flags, 
    -                   bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/one_plus_parser.html b/doc/html/boost/parser/one_plus_parser.html index e2465210..d85a3cd6 100644 --- a/doc/html/boost/parser/one_plus_parser.html +++ b/doc/html/boost/parser/one_plus_parser.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,19 +26,17 @@

Synopsis

template<typename Parser> struct one_plus_parser : public boost::parser::repeat_parser< Parser > { // construct/copy/destruct - one_plus_parser(Parser); + one_plus_parser(Parser); };
-

Description

-

Repeats the application of another parser p of type Parser, [1, Inf) times. The parse succeeds iff p succeeds at least once. The attribute produced is a sequence of the type of attribute produced by Parser.

-

A simplified repeat_parser that applies parser one or more times.
-

+

Description

+

Repeats the application of another parser p of type Parser, [1, Inf) times. The parse succeeds iff p succeeds at least once. The attribute produced is a sequence of the type of attribute produced by Parser.

-

+

one_plus_parser public construct/copy/destruct

-
  1. one_plus_parser(Parser parser);
+
  1. one_plus_parser(Parser parser);
@@ -49,7 +47,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator%_idm26977.html b/doc/html/boost/parser/operator%_idm32405.html similarity index 85% rename from doc/html/boost/parser/operator%_idm26977.html rename to doc/html/boost/parser/operator%_idm32405.html index f7ef9d23..49367b0e 100644 --- a/doc/html/boost/parser/operator%_idm26977.html +++ b/doc/html/boost/parser/operator%_idm32405.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator%

boost::parser::operator%

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator%(char c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(c) % rhs.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator%_idm26989.html b/doc/html/boost/parser/operator%_idm32417.html similarity index 85% rename from doc/html/boost/parser/operator%_idm26989.html rename to doc/html/boost/parser/operator%_idm32417.html index 5f88e721..3bb6067e 100644 --- a/doc/html/boost/parser/operator%_idm26989.html +++ b/doc/html/boost/parser/operator%_idm32417.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator%

boost::parser::operator%

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator%(char32_t c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(c) % rhs.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator%_idm27001.html b/doc/html/boost/parser/operator%_idm32429.html similarity index 71% rename from doc/html/boost/parser/operator%_idm27001.html rename to doc/html/boost/parser/operator%_idm32429.html index 7163ef3b..0ebcc894 100644 --- a/doc/html/boost/parser/operator%_idm27001.html +++ b/doc/html/boost/parser/operator%_idm32429.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator%

boost::parser::operator%

@@ -24,11 +24,10 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser> 
   constexpr auto operator%(R && r, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(str) % rhs.

@@ -39,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator-_idm26938.html b/doc/html/boost/parser/operator-_idm32367.html similarity index 85% rename from doc/html/boost/parser/operator-_idm26938.html rename to doc/html/boost/parser/operator-_idm32367.html index 89c8f588..e1aeb92e 100644 --- a/doc/html/boost/parser/operator-_idm26938.html +++ b/doc/html/boost/parser/operator-_idm32367.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator-

boost::parser::operator-

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator-(char c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to !rhs >> lit(c).

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator-_idm26950.html b/doc/html/boost/parser/operator-_idm32379.html similarity index 85% rename from doc/html/boost/parser/operator-_idm26950.html rename to doc/html/boost/parser/operator-_idm32379.html index 20ee1b13..86860884 100644 --- a/doc/html/boost/parser/operator-_idm26950.html +++ b/doc/html/boost/parser/operator-_idm32379.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator-

boost::parser::operator-

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator-(char32_t c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to !rhs >> lit(c).

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator-_idm26962.html b/doc/html/boost/parser/operator-_idm32391.html similarity index 71% rename from doc/html/boost/parser/operator-_idm26962.html rename to doc/html/boost/parser/operator-_idm32391.html index b3f53479..06248aff 100644 --- a/doc/html/boost/parser/operator-_idm26962.html +++ b/doc/html/boost/parser/operator-_idm32391.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator-

boost::parser::operator-

@@ -24,11 +24,10 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser> 
   constexpr auto operator-(R && r, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to !rhs >> lit(str).

@@ -39,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator_idm26821.html b/doc/html/boost/parser/operator_idm32253.html similarity index 87% rename from doc/html/boost/parser/operator_idm26821.html rename to doc/html/boost/parser/operator_idm32253.html index 4a9a228c..65ba8fb2 100644 --- a/doc/html/boost/parser/operator_idm26821.html +++ b/doc/html/boost/parser/operator_idm32253.html @@ -7,15 +7,15 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator>>

boost::parser::operator>>

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator>>(char c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(c) >> rhs.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator_idm26833.html b/doc/html/boost/parser/operator_idm32265.html similarity index 85% rename from doc/html/boost/parser/operator_idm26833.html rename to doc/html/boost/parser/operator_idm32265.html index e35eb118..e2ecb44c 100644 --- a/doc/html/boost/parser/operator_idm26833.html +++ b/doc/html/boost/parser/operator_idm32265.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator>>

boost::parser::operator>>

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator>>(char32_t c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(c) >> rhs.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator_idm26845.html b/doc/html/boost/parser/operator_idm32277.html similarity index 71% rename from doc/html/boost/parser/operator_idm26845.html rename to doc/html/boost/parser/operator_idm32277.html index 4894dd6b..a80d2afd 100644 --- a/doc/html/boost/parser/operator_idm26845.html +++ b/doc/html/boost/parser/operator_idm32277.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator>>

boost::parser::operator>>

@@ -24,11 +24,10 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser> 
   constexpr auto operator>>(R && r, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(str) >> rhs.

@@ -39,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator_idm26860.html b/doc/html/boost/parser/operator_idm32291.html similarity index 85% rename from doc/html/boost/parser/operator_idm26860.html rename to doc/html/boost/parser/operator_idm32291.html index 68181da6..a57e5c02 100644 --- a/doc/html/boost/parser/operator_idm26860.html +++ b/doc/html/boost/parser/operator_idm32291.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator>

boost::parser::operator>

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator>(char c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(c) > rhs.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator_idm26872.html b/doc/html/boost/parser/operator_idm32303.html similarity index 85% rename from doc/html/boost/parser/operator_idm26872.html rename to doc/html/boost/parser/operator_idm32303.html index 19be285d..acc0c0fb 100644 --- a/doc/html/boost/parser/operator_idm26872.html +++ b/doc/html/boost/parser/operator_idm32303.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator>

boost::parser::operator>

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator>(char32_t c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(c) > rhs.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator_idm26884.html b/doc/html/boost/parser/operator_idm32315.html similarity index 71% rename from doc/html/boost/parser/operator_idm26884.html rename to doc/html/boost/parser/operator_idm32315.html index 9d46d6a0..87dbf277 100644 --- a/doc/html/boost/parser/operator_idm26884.html +++ b/doc/html/boost/parser/operator_idm32315.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator>

boost::parser::operator>

@@ -24,11 +24,10 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser> 
   constexpr auto operator>(R && r, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(str) > rhs.

@@ -39,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator_idm26899.html b/doc/html/boost/parser/operator_idm32329.html similarity index 85% rename from doc/html/boost/parser/operator_idm26899.html rename to doc/html/boost/parser/operator_idm32329.html index df878002..44c1906f 100644 --- a/doc/html/boost/parser/operator_idm26899.html +++ b/doc/html/boost/parser/operator_idm32329.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator|

boost::parser::operator|

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator|(char c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(c) | rhs.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator_idm26911.html b/doc/html/boost/parser/operator_idm32341.html similarity index 85% rename from doc/html/boost/parser/operator_idm26911.html rename to doc/html/boost/parser/operator_idm32341.html index 8dfc6291..5cb66cb7 100644 --- a/doc/html/boost/parser/operator_idm26911.html +++ b/doc/html/boost/parser/operator_idm32341.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator|

boost::parser::operator|

@@ -27,7 +27,7 @@

Synopsis

template<typename Parser> constexpr auto operator|(char32_t c, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(c) | rhs.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/operator_idm26923.html b/doc/html/boost/parser/operator_idm32353.html similarity index 71% rename from doc/html/boost/parser/operator_idm26923.html rename to doc/html/boost/parser/operator_idm32353.html index 867d2edb..3bc287ef 100644 --- a/doc/html/boost/parser/operator_idm26923.html +++ b/doc/html/boost/parser/operator_idm32353.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template operator|

boost::parser::operator|

@@ -24,11 +24,10 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser> 
   constexpr auto operator|(R && r, parser_interface< Parser > rhs);
-

Description

+

Description

Returns a parser equivalent to lit(str) | rhs.

@@ -39,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/opt_parser.html b/doc/html/boost/parser/opt_parser.html index 35fb0feb..a8ce61b1 100644 --- a/doc/html/boost/parser/opt_parser.html +++ b/doc/html/boost/parser/opt_parser.html @@ -26,37 +26,35 @@

Synopsis

template<typename Parser> struct opt_parser { - // public member functions - template<bool UseCallbacks, typename Iter, typename Sentinel, - typename Context, typename SkipParser> - auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, - Context const &, SkipParser const &, unspecified, bool &) const; - template<bool UseCallbacks, typename Iter, typename Sentinel, - typename Context, typename SkipParser, typename Attribute> - void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, - Context const &, SkipParser const &, unspecified, bool &, - Attribute &) const; + // public member functions + template<typename Iter, typename Sentinel, typename Context, + typename SkipParser> + auto call(Iter &, Sentinel, Context const &, SkipParser const &, + unspecified, bool &) const; + template<typename Iter, typename Sentinel, typename Context, + typename SkipParser, typename Attribute> + void call(Iter &, Sentinel, Context const &, SkipParser const &, + unspecified, bool &, Attribute &) const; // public data members Parser parser_; };
-

Description

+

Description

Repeats the application of another parser of type Parser, [0, 1] times. The parse always succeeds. The attribute produced is a std::optional<T>, where T is the type of attribute produced by Parser.

-

-opt_parser public member functions

+

+opt_parser public member functions

    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. +
  5. template<typename Iter, typename Sentinel, typename Context, 
    +         typename SkipParser> 
    +  auto call(Iter & first, Sentinel last, Context const & context, 
    +            SkipParser const & skip, unspecified flags, bool & success) const;
  6. +
  7. template<typename Iter, typename Sentinel, typename Context, 
    +         typename SkipParser, typename Attribute> 
    +  void call(Iter & first, Sentinel last, Context const & context, 
    +            SkipParser const & skip, unspecified flags, bool & success, 
    +            Attribute & retval) const;
diff --git a/doc/html/boost/parser/or_parser.html b/doc/html/boost/parser/or_parser.html index 4a811665..5f37db05 100644 --- a/doc/html/boost/parser/or_parser.html +++ b/doc/html/boost/parser/or_parser.html @@ -26,46 +26,44 @@

Synopsis

template<typename ParserTuple> struct or_parser { // construct/copy/destruct - or_parser(ParserTuple); + or_parser(ParserTuple); - // public member functions - template<bool UseCallbacks, typename Iter, typename Sentinel, - typename Context, typename SkipParser> - auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, - Context const &, SkipParser const &, unspecified, bool &) const; - template<bool UseCallbacks, typename Iter, typename Sentinel, - typename Context, typename SkipParser, typename Attribute> - void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, - Context const &, SkipParser const &, unspecified, bool &, - Attribute &) const; + // public member functions + template<typename Iter, typename Sentinel, typename Context, + typename SkipParser> + auto call(Iter &, Sentinel, Context const &, SkipParser const &, + unspecified, bool &) const; + template<typename Iter, typename Sentinel, typename Context, + typename SkipParser, typename Attribute> + void call(Iter &, Sentinel, Context const &, SkipParser const &, + unspecified, bool &, Attribute &) const; // public data members ParserTuple parsers_; };
-

Description

+

Description

Applies each parser in ParserTuple, in order, stopping after the application of the first one that succeeds. The parse succeeds iff one of the sub-parsers succeeds. The attribute produced is a std::variant over the types of attribute produced by the parsers in ParserTuple.

-

+

or_parser public construct/copy/destruct

-
  1. or_parser(ParserTuple parsers);
+
  1. or_parser(ParserTuple parsers);
-

-or_parser public member functions

+

+or_parser public member functions

    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. +
  5. template<typename Iter, typename Sentinel, typename Context, 
    +         typename SkipParser> 
    +  auto call(Iter & first, Sentinel last, Context const & context, 
    +            SkipParser const & skip, unspecified flags, bool & success) const;
  6. +
  7. template<typename Iter, typename Sentinel, typename Context, 
    +         typename SkipParser, typename Attribute> 
    +  void call(Iter & first, Sentinel last, Context const & context, 
    +            SkipParser const & skip, unspecified flags, bool & success, 
    +            Attribute & retval) const;
diff --git a/doc/html/boost/parser/parse_error.html b/doc/html/boost/parser/parse_error.html index e8e66254..7d5f35df 100644 --- a/doc/html/boost/parser/parse_error.html +++ b/doc/html/boost/parser/parse_error.html @@ -26,20 +26,20 @@

Synopsis

template<typename Iter> struct parse_error : public std::runtime_error { // construct/copy/destruct - parse_error(Iter, std::string const &); + parse_error(Iter, std::string const &); // public data members Iter iter; };
-

Description

+

Description

The exception thrown when a parse error is encountered, consisting of an iterator to the point of failure, and the name of the failed parser or rule in what().

-

+

parse_error public construct/copy/destruct

-
  1. parse_error(Iter it, std::string const & msg);
+
  1. parse_error(Iter it, std::string const & msg);
diff --git a/doc/html/boost/parser/parse_idm27047.html b/doc/html/boost/parser/parse_idm32479.html similarity index 65% rename from doc/html/boost/parser/parse_idm27047.html rename to doc/html/boost/parser/parse_idm32479.html index 6efd9d57..f04557af 100644 --- a/doc/html/boost/parser/parse_idm27047.html +++ b/doc/html/boost/parser/parse_idm32479.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template parse

boost::parser::parse

@@ -24,15 +24,41 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename Attr, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser, typename GlobalState, 
+         typename ErrorHandler, typename Attr> 
   bool parse(R const & r, 
              parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
              Attr & attr, trace trace_mode = trace::off);
-

Description

-

Parses r using parser, and returns whether the parse was successful. The entire input range r must be consumed for the parse to be considered successful. On success, attr will be assigned the value of the attribute produced by parser. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

Description

+

Parses r using parser, and returns whether the parse was successful. The entire input range r must be consumed for the parse to be considered successful. On success, attr will be assigned the value of the attribute produced by parser. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

+

+
++++ + + + + +

Template Parameters:

++++ + + + + + + + + + + +

Attr

Constrained by !detail::derived_from_parser_interface_v<std::remove_cvref_t<Attr>.

ErrorHandler

Constrained by error_handler<ErrorHandler,std::ranges::iterator_t<decltype(subrange_of(r))>, std::ranges::sentinel_t<decltype(subrange_of(r))>, GlobalState>, where subrange_of is an implementation detail that: creates subranges out of pointers; trims trailing zeros off of bounded arrays (such as string literals); and transcodes to UTF-32 if the input is non-char.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/parse_idm27105.html b/doc/html/boost/parser/parse_idm32547.html similarity index 67% rename from doc/html/boost/parser/parse_idm27105.html rename to doc/html/boost/parser/parse_idm32547.html index 2a6dd9f8..09fe6fbd 100644 --- a/doc/html/boost/parser/parse_idm27105.html +++ b/doc/html/boost/parser/parse_idm32547.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template parse

boost::parser::parse

@@ -24,15 +24,35 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, typename GlobalState, 
-         typename ErrorHandler, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser, typename GlobalState, 
+         typename ErrorHandler> 
   auto parse(R const & r, 
              parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
              trace trace_mode = trace::off);
-

Description

-

Parses r using parser. Returns a std::optional containing the attribute produced by parser on parse success, and std::nullopt on parse failure. The entire input range r must be consumed for the parse to be considered successful. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

Description

+

Parses r using parser. Returns a std::optional containing the attribute produced by parser on parse success, and std::nullopt on parse failure. The entire input range r must be consumed for the parse to be considered successful. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

+

+
++++ + + + + +

Template Parameters:

++++ + + + + +

ErrorHandler

Constrained by error_handler<ErrorHandler,std::ranges::iterator_t<decltype(subrange_of(r))>, std::ranges::sentinel_t<decltype(subrange_of(r))>, GlobalState>, where subrange_of is an implementation detail that: creates subranges out of pointers; trims trailing zeros off of bounded arrays (such as string literals); and transcodes to UTF-32 if the input is non-char.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/parse_idm27168.html b/doc/html/boost/parser/parse_idm32616.html similarity index 70% rename from doc/html/boost/parser/parse_idm27168.html rename to doc/html/boost/parser/parse_idm32616.html index 657772b0..f21aa122 100644 --- a/doc/html/boost/parser/parse_idm27168.html +++ b/doc/html/boost/parser/parse_idm32616.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template parse

boost::parser::parse

@@ -24,16 +24,36 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename SkipParser, typename Attr, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser, typename GlobalState, 
+         typename ErrorHandler, typename SkipParser, typename Attr> 
   bool parse(R const & r, 
              parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
              parser_interface< SkipParser > const & skip, Attr & attr, 
              trace trace_mode = trace::off);
-

Description

-

Parses r using parser, skipping all input recognized by skip between the application of any two parsers, and returns whether the parse was successful. The entire input range r must be consumed for the parse to be considered successful. On success, attr will be assigned the value of the attribute produced by parser. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

Description

+

Parses r using parser, skipping all input recognized by skip between the application of any two parsers, and returns whether the parse was successful. The entire input range r must be consumed for the parse to be considered successful. On success, attr will be assigned the value of the attribute produced by parser. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

+

+
++++ + + + + +

Template Parameters:

++++ + + + + +

ErrorHandler

Constrained by error_handler<ErrorHandler,std::ranges::iterator_t<decltype(subrange_of(r))>, std::ranges::sentinel_t<decltype(subrange_of(r))>, GlobalState>, where subrange_of is an implementation detail that: creates subranges out of pointers; trims trailing zeros off of bounded arrays (such as string literals); and transcodes to UTF-32 if the input is non-char.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/parse_idm27236.html b/doc/html/boost/parser/parse_idm32690.html similarity index 70% rename from doc/html/boost/parser/parse_idm27236.html rename to doc/html/boost/parser/parse_idm32690.html index 0e6bbcc0..f403fc98 100644 --- a/doc/html/boost/parser/parse_idm27236.html +++ b/doc/html/boost/parser/parse_idm32690.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template parse

boost::parser::parse

@@ -24,16 +24,36 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename R, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename SkipParser, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser, typename GlobalState, 
+         typename ErrorHandler, typename SkipParser> 
   auto parse(R const & r, 
              parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
              parser_interface< SkipParser > const & skip, 
              trace trace_mode = trace::off);
-

Description

-

Parses r using parser, skipping all input recognized by skip between the application of any two parsers. Returns a std::optional containing the attribute produced by parser on parse success, and std::nullopt on parse failure. The entire input range r must be consumed for the parse to be considered successful. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

Description

+

Parses r using parser, skipping all input recognized by skip between the application of any two parsers. Returns a std::optional containing the attribute produced by parser on parse success, and std::nullopt on parse failure. The entire input range r must be consumed for the parse to be considered successful. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

+

+
++++ + + + + +

Template Parameters:

++++ + + + + +

ErrorHandler

Constrained by error_handler<ErrorHandler,std::ranges::iterator_t<decltype(subrange_of(r))>, std::ranges::sentinel_t<decltype(subrange_of(r))>, GlobalState>, where subrange_of is an implementation detail that: creates subranges out of pointers; trims trailing zeros off of bounded arrays (such as string literals); and transcodes to UTF-32 if the input is non-char.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/parser_interface.html b/doc/html/boost/parser/parser_interface.html index 06439e21..43b1d8f2 100644 --- a/doc/html/boost/parser/parser_interface.html +++ b/doc/html/boost/parser/parser_interface.html @@ -7,12 +7,12 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,201 +26,200 @@

Synopsis

template<typename Parser, typename GlobalState, typename ErrorHandler> struct parser_interface { // types - typedef Parser parser_type; - typedef GlobalState global_state_type; - typedef ErrorHandler error_handler_type; + typedef Parser parser_type; + typedef GlobalState global_state_type; + typedef ErrorHandler error_handler_type; + typedef int parser_interface_derivation_tag; // construct/copy/destruct - parser_interface(); - parser_interface(parser_type); - parser_interface(parser_type, global_state_type, error_handler_type); + parser_interface(); + parser_interface(parser_type); + parser_interface(parser_type, global_state_type, error_handler_type); - // public member functions - constexpr auto operator!() const noexcept; - constexpr auto operator&() const noexcept; - constexpr auto operator*() const noexcept; - constexpr auto operator+() const noexcept; - constexpr auto operator-() const noexcept; + // public member functions + constexpr auto operator!() const noexcept; + constexpr auto operator&() const noexcept; + constexpr auto operator*() const noexcept; + constexpr auto operator+() const noexcept; + constexpr auto operator-() const noexcept; template<typename ParserType2> - constexpr auto operator>>(parser_interface< ParserType2 >) const noexcept; - constexpr auto operator>>(char) const noexcept; - constexpr auto operator>>(char32_t) const noexcept; - template<typename R, - typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > - constexpr auto operator>>(R &&) const noexcept; + constexpr auto operator>>(parser_interface< ParserType2 >) const noexcept; + constexpr auto operator>>(char) const noexcept; + constexpr auto operator>>(char32_t) const noexcept; + template<parsable_range_like R> + constexpr auto operator>>(R &&) const noexcept; template<typename ParserType2> - constexpr auto operator>(parser_interface< ParserType2 >) const noexcept; - constexpr auto operator>(char) const noexcept; - constexpr auto operator>(char32_t) const noexcept; - template<typename R, - typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > - constexpr auto operator>(R &&) const noexcept; + constexpr auto operator>(parser_interface< ParserType2 >) const noexcept; + constexpr auto operator>(char) const noexcept; + constexpr auto operator>(char32_t) const noexcept; + template<parsable_range_like R> + constexpr auto operator>(R &&) const noexcept; template<typename ParserType2> - constexpr auto operator|(parser_interface< ParserType2 >) const noexcept; - constexpr auto operator|(char) const noexcept; - constexpr auto operator|(char32_t) const noexcept; - template<typename R, - typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > - constexpr auto operator|(R &&) const noexcept; + constexpr auto operator|(parser_interface< ParserType2 >) const noexcept; template<typename ParserType2> - constexpr auto operator-(parser_interface< ParserType2 >) const noexcept; - constexpr auto operator-(char) const noexcept; - constexpr auto operator-(char32_t) const noexcept; - template<typename R, - typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > - constexpr auto operator-(R &&) const noexcept; + constexpr auto operator||(parser_interface< ParserType2 >) const noexcept; + constexpr auto operator|(char) const noexcept; + constexpr auto operator|(char32_t) const noexcept; + template<parsable_range_like R> + constexpr auto operator|(R &&) const noexcept; template<typename ParserType2> - constexpr auto operator%(parser_interface< ParserType2 >) const noexcept; - constexpr auto operator%(char) const noexcept; - constexpr auto operator%(char32_t) const noexcept; - template<typename R, - typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > - constexpr auto operator%(R &&) const noexcept; - template<typename Action> constexpr auto operator[](Action) const; + constexpr auto operator-(parser_interface< ParserType2 >) const noexcept; + constexpr auto operator-(char) const noexcept; + constexpr auto operator-(char32_t) const noexcept; + template<parsable_range_like R> + constexpr auto operator-(R &&) const noexcept; + template<typename ParserType2> + constexpr auto operator%(parser_interface< ParserType2 >) const noexcept; + constexpr auto operator%(char) const noexcept; + constexpr auto operator%(char32_t) const noexcept; + template<parsable_range_like R> + constexpr auto operator%(R &&) const noexcept; + template<typename Action> constexpr auto operator[](Action) const; template<typename Arg, typename... Args> - constexpr auto operator()(Arg &&, Args &&...) const noexcept; + constexpr auto operator()(Arg &&, Args &&...) const noexcept; };
-

Description

+

Description

A wrapper for parsers that provides the operations that must be supported by all parsers (e.g. operator>>()). GlobalState is an optional state object that can be accessed within semantic actions via a call to _globals(). This global state object is ignored for all but the topmost parser; the topmost global state object is available in the semantic actions of all nested parsers. ErrorHandler is the type of the error handler to be used on parse failure. This handler is ignored on all but the topmost parser; the topmost parser's error handler is used for all errors encountered during parsing.

-

+

parser_interface public construct/copy/destruct

    -
  1. parser_interface();
  2. -
  3. parser_interface(parser_type p);
  4. -
  5. parser_interface(parser_type p, global_state_type gs, error_handler_type eh);
  6. +
  7. parser_interface();
  8. +
  9. parser_interface(parser_type p);
  10. +
  11. parser_interface(parser_type p, global_state_type gs, error_handler_type eh);
-

-parser_interface public member functions

+

+parser_interface public member functions

  1. -
    constexpr auto operator!() const noexcept;
    +
    constexpr auto operator!() const noexcept;

    Returns a parser_interface containing a parser equivalent to an expect_parser containing parser_, with FailOnMatch == true.

  2. -
    constexpr auto operator&() const noexcept;
    +
    constexpr auto operator&() const noexcept;

    Returns a parser_interface containing a parser equivalent to an expect_parser containing parser_, with FailOnMatch == false.

  3. -
    constexpr auto operator*() const noexcept;
    +
    constexpr auto operator*() const noexcept;

    Returns a parser_interface containing a parser equivalent to a zero_plus_parser containing parser_.

  4. -
    constexpr auto operator+() const noexcept;
    +
    constexpr auto operator+() const noexcept;

    Returns a parser_interface containing a parser equivalent to a one_plus_parser containing parser_.

  5. -
    constexpr auto operator-() const noexcept;
    +
    constexpr auto operator-() const noexcept;

    Returns a parser_interface containing a parser equivalent to a opt_parser containing parser_.

  6. template<typename ParserType2> 
       constexpr auto 
    -  operator>>(parser_interface< ParserType2 > rhs) const noexcept;
    + operator>>(parser_interface< ParserType2 > rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to a seq_parser containing parser_ followed by rhs.parser_.

  7. -
    constexpr auto operator>>(char rhs) const noexcept;
    +
    constexpr auto operator>>(char rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to a seq_parser containing parser_ followed by lit(rhs).

  8. -
    constexpr auto operator>>(char32_t rhs) const noexcept;
    +
    constexpr auto operator>>(char32_t rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to a seq_parser containing parser_ followed by lit(rhs).

  9. -
    template<typename R, 
    -         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -  constexpr auto operator>>(R && r) const noexcept;
    +
    template<parsable_range_like R> 
    +  constexpr auto operator>>(R && r) const noexcept;

    Returns a parser_interface containing a parser equivalent to a seq_parser containing parser_ followed by lit(rhs).

  10. template<typename ParserType2> 
    -  constexpr auto operator>(parser_interface< ParserType2 > rhs) const noexcept;
    + constexpr auto operator>(parser_interface< ParserType2 > rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to a seq_parser containing parser_ followed by rhs.parser_. No back-tracking is allowed after parser_ succeeds; if rhs.parser_ fails after parser_ succeeds, the top-level parse fails.

  11. -
    constexpr auto operator>(char rhs) const noexcept;
    +
    constexpr auto operator>(char rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to a seq_parser containing parser_ followed by lit(rhs). No back-tracking is allowed after parser_ succeeds; if lit(rhs) fails after parser_ succeeds, the top-level parse fails.

  12. -
    constexpr auto operator>(char32_t rhs) const noexcept;
    +
    constexpr auto operator>(char32_t rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to a seq_parser containing parser_ followed by lit(rhs). No back-tracking is allowed after parser_ succeeds; if lit(rhs) fails after parser_ succeeds, the top-level parse fails.

  13. -
    template<typename R, 
    -         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -  constexpr auto operator>(R && r) const noexcept;
    +
    template<parsable_range_like R> 
    +  constexpr auto operator>(R && r) const noexcept;

    Returns a parser_interface containing a parser equivalent to a seq_parser containing parser_ followed by lit(rhs). No back-tracking is allowed after parser_ succeeds; if lit(rhs) fails after parser_ succeeds, the top-level parse fails.

  14. template<typename ParserType2> 
    -  constexpr auto operator|(parser_interface< ParserType2 > rhs) const noexcept;
    + constexpr auto operator|(parser_interface< ParserType2 > rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to an or_parser containing parser_ followed by rhs.parser_.

  15. -
    constexpr auto operator|(char rhs) const noexcept;
    +
    template<typename ParserType2> 
    +  constexpr auto 
    +  operator||(parser_interface< ParserType2 > rhs) const noexcept;
    +

    Returns a parser_interface containing a parser equivalent to a perm_parser containing parser_ followed by rhs.parser_. It is an error to use eps (conditional or not) with this operator.

    +
  16. +
  17. +
    constexpr auto operator|(char rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to an or_parser containing parser_ followed by lit(rhs).

  18. -
    constexpr auto operator|(char32_t rhs) const noexcept;
    +
    constexpr auto operator|(char32_t rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to an or_parser containing parser_ followed by lit(rhs).

  19. -
    template<typename R, 
    -         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -  constexpr auto operator|(R && r) const noexcept;
    +
    template<parsable_range_like R> 
    +  constexpr auto operator|(R && r) const noexcept;

    Returns a parser_interface containing a parser equivalent to an or_parser containing parser_ followed by lit(rhs).

  20. template<typename ParserType2> 
    -  constexpr auto operator-(parser_interface< ParserType2 > rhs) const noexcept;
    + constexpr auto operator-(parser_interface< ParserType2 > rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to !rhs >> *this.

  21. -
    constexpr auto operator-(char rhs) const noexcept;
    +
    constexpr auto operator-(char rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to !lit(rhs) >> *this.

  22. -
    constexpr auto operator-(char32_t rhs) const noexcept;
    +
    constexpr auto operator-(char32_t rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to !lit(rhs) >> *this.

  23. -
    template<typename R, 
    -         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -  constexpr auto operator-(R && r) const noexcept;
    +
    template<parsable_range_like R> 
    +  constexpr auto operator-(R && r) const noexcept;

    Returns a parser_interface containing a parser equivalent to !lit(rhs) >> *this.

  24. template<typename ParserType2> 
    -  constexpr auto operator%(parser_interface< ParserType2 > rhs) const noexcept;
    + constexpr auto operator%(parser_interface< ParserType2 > rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to an delimited_seq_parser containing parser_ and rhs.parser_.

  25. -
    constexpr auto operator%(char rhs) const noexcept;
    +
    constexpr auto operator%(char rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to an delimited_seq_parser containing parser_ and lit(rhs).

  26. -
    constexpr auto operator%(char32_t rhs) const noexcept;
    +
    constexpr auto operator%(char32_t rhs) const noexcept;

    Returns a parser_interface containing a parser equivalent to an delimited_seq_parser containing parser_ and lit(rhs).

  27. -
    template<typename R, 
    -         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -  constexpr auto operator%(R && r) const noexcept;
    +
    template<parsable_range_like R> 
    +  constexpr auto operator%(R && r) const noexcept;

    Returns a parser_interface containing a parser equivalent to an delimited_seq_parser containing parser_ and lit(rhs).

  28. -
    template<typename Action> constexpr auto operator[](Action action) const;
    +
    template<typename Action> constexpr auto operator[](Action action) const;

    Returns a parser_interface containing a parser equivalent to an action_parser containing parser_, with semantic action action.

  29. template<typename Arg, typename... Args> 
    -  constexpr auto operator()(Arg && arg, Args &&... args) const noexcept;
    + constexpr auto operator()(Arg && arg, Args &&... args) const noexcept;

    Returns parser_((Arg &&)arg, (Args &&)args...). This is useful for those parsers that have operator() overloads, e.g. <lsquo></lsquo>char_('x<rsquo></rsquo>)<lsquo></lsquo>. By convention, parsers<rsquo></rsquo> operator()s return parser_interfaces.

    This function does not participate in overload resolution unless parser_((Arg &&)arg, (Args &&)args...) is well-formed.

  30. @@ -235,7 +234,7 @@

    Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/perm_parser.html b/doc/html/boost/parser/perm_parser.html new file mode 100644 index 00000000..bcd2fd40 --- /dev/null +++ b/doc/html/boost/parser/perm_parser.html @@ -0,0 +1,92 @@ + + + +Struct template perm_parser + + + + + + + + + +
+PrevUpHomeNext +
+
+
+
+

Struct template perm_parser

+

boost::parser::perm_parser

+
+

Synopsis

+
// In header: <boost/parser/parser.hpp>
+
+template<typename ParserTuple> 
+struct perm_parser {
+  // construct/copy/destruct
+  perm_parser(ParserTuple);
+
+  // public member functions
+  template<typename Iter, typename Sentinel, typename Context, 
+           typename SkipParser> 
+    auto call(Iter &, Sentinel, Context const &, SkipParser const &, 
+              unspecified, bool &) const;
+  template<typename Iter, typename Sentinel, typename Context, 
+           typename SkipParser, typename Attribute> 
+    void call(Iter &, Sentinel, Context const &, SkipParser const &, 
+              unspecified, bool &, Attribute &) const;
+  template<typename Iter, typename Sentinel, typename Context, 
+           typename SkipParser, typename... Ts, int... Is> 
+    void call_impl(Iter &, Sentinel, Context const &, SkipParser const &, 
+                   unspecified, bool &, tuple< Ts... > &, 
+                   std::integer_sequence< int, Is... >) const;
+
+  // public data members
+  ParserTuple parsers_;
+};
+
+

Description

+

Applies each parsers in ParserTuple, an any order, stopping after all of them have matched the input. The parse succeeds iff all the parsers match, regardless of the order in which they do. The attribute produced is a parser::tuple containing the attributes of the subparsers, in their order of the parsers' appearance in ParserTuple, not the order of the parsers' matches. It is an error to specialize perm_parser with a ParserTuple template parameter that includes an eps_parser.

+
+

+perm_parser + public + construct/copy/destruct

+
  1. perm_parser(ParserTuple parsers);
+
+
+

+perm_parser public member functions

+
    +
  1. template<typename Iter, typename Sentinel, typename Context, 
    +         typename SkipParser> 
    +  auto call(Iter & first_, Sentinel last, Context const & context, 
    +            SkipParser const & skip, unspecified flags, bool & success) const;
  2. +
  3. template<typename Iter, typename Sentinel, typename Context, 
    +         typename SkipParser, typename Attribute> 
    +  void call(Iter & first_, Sentinel last, Context const & context, 
    +            SkipParser const & skip, unspecified flags, bool & success, 
    +            Attribute & retval) const;
  4. +
  5. template<typename Iter, typename Sentinel, typename Context, 
    +         typename SkipParser, typename... Ts, int... Is> 
    +  void call_impl(Iter & first, Sentinel last, Context const & context, 
    +                 SkipParser const & skip, unspecified flags, bool & success, 
    +                 tuple< Ts... > & retval, 
    +                 std::integer_sequence< int, Is... >) const;
  6. +
+
+
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost/parser/prefix_parse_idm27016.html b/doc/html/boost/parser/prefix_parse_idm32443.html similarity index 64% rename from doc/html/boost/parser/prefix_parse_idm27016.html rename to doc/html/boost/parser/prefix_parse_idm32443.html index b73cadbb..ca9d07dd 100644 --- a/doc/html/boost/parser/prefix_parse_idm27016.html +++ b/doc/html/boost/parser/prefix_parse_idm32443.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template prefix_parse

boost::parser::prefix_parse

@@ -24,15 +24,36 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename I, typename S, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename Attr, 
-         typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
+template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
+         typename GlobalState, 
+         error_handler< I, S, GlobalState > ErrorHandler, typename Attr> 
   bool prefix_parse(I & first, S last, 
                     parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                     Attr & attr, trace trace_mode = trace::off);
-

Description

-

Parses [first, last) using parser, and returns whether the parse was successful. On success, attr will be assigned the value of the attribute produced by parser. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

Description

+

Parses [first, last) using parser, and returns whether the parse was successful. On success, attr will be assigned the value of the attribute produced by parser. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

+

+
++++ + + + + +

Template Parameters:

++++ + + + + +

Attr

Constrained by !detail::derived_from_parser_interface_v<std::remove_cvref_t<Attr>.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/prefix_parse_idm27076.html b/doc/html/boost/parser/prefix_parse_idm32516.html similarity index 67% rename from doc/html/boost/parser/prefix_parse_idm27076.html rename to doc/html/boost/parser/prefix_parse_idm32516.html index a1532f45..07e0b5d0 100644 --- a/doc/html/boost/parser/prefix_parse_idm27076.html +++ b/doc/html/boost/parser/prefix_parse_idm32516.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template prefix_parse

boost::parser::prefix_parse

@@ -24,15 +24,17 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename I, typename S, typename Parser, typename GlobalState, 
-         typename ErrorHandler, 
-         typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
+template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
+         typename GlobalState, 
+         error_handler< I, S, GlobalState > ErrorHandler> 
   auto prefix_parse(I & first, S last, 
                     parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                     trace trace_mode = trace::off);
-

Description

-

Parses [first, last) using parser. Returns a std::optional containing the attribute produced by parser on parse success, and std::nullopt on parse failure. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

Description

+

Parses [first, last) using parser. Returns a std::optional containing the attribute produced by parser on parse success, and std::nullopt on parse failure. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

+

+


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/prefix_parse_idm27132.html b/doc/html/boost/parser/prefix_parse_idm32579.html similarity index 69% rename from doc/html/boost/parser/prefix_parse_idm27132.html rename to doc/html/boost/parser/prefix_parse_idm32579.html index c3a98130..eb4d365f 100644 --- a/doc/html/boost/parser/prefix_parse_idm27132.html +++ b/doc/html/boost/parser/prefix_parse_idm32579.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template prefix_parse

boost::parser::prefix_parse

@@ -24,15 +24,16 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename I, typename S, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename SkipParser, typename Attr, 
-         typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
+template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
+         typename GlobalState, 
+         error_handler< I, S, GlobalState > ErrorHandler, typename SkipParser, 
+         typename Attr> 
   bool prefix_parse(I & first, S last, 
                     parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                     parser_interface< SkipParser > const & skip, Attr & attr, 
                     trace trace_mode = trace::off);
-

Description

+

Description

Parses [first, last) using parser, skipping all input recognized by skip between the application of any two parsers, and returns whether the parse was successful. On success, attr will be assigned the value of the attribute produced by parser. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

@@ -43,7 +44,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/prefix_parse_idm27202.html b/doc/html/boost/parser/prefix_parse_idm32655.html similarity index 69% rename from doc/html/boost/parser/prefix_parse_idm27202.html rename to doc/html/boost/parser/prefix_parse_idm32655.html index 7c78348e..8c109b73 100644 --- a/doc/html/boost/parser/prefix_parse_idm27202.html +++ b/doc/html/boost/parser/prefix_parse_idm32655.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template prefix_parse

boost::parser::prefix_parse

@@ -24,15 +24,15 @@

Synopsis

// In header: <boost/parser/parser.hpp>
 
 
-template<typename I, typename S, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename SkipParser, 
-         typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
+template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
+         typename GlobalState, 
+         error_handler< I, S, GlobalState > ErrorHandler, typename SkipParser> 
   auto prefix_parse(I & first, S last, 
                     parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                     parser_interface< SkipParser > const & skip, 
                     trace trace_mode = trace::off);
-

Description

+

Description

Parses [first, last) using parser, skipping all input recognized by skip between the application of any two parsers. Returns a std::optional containing the attribute produced by parser on parse success, and std::nullopt on parse failure. If trace_mode == trace::on, a verbose trace of the parse will be streamed to std::cout.

@@ -43,7 +43,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/punct.html b/doc/html/boost/parser/punct.html index 068c31cc..7e26ba9f 100644 --- a/doc/html/boost/parser/punct.html +++ b/doc/html/boost/parser/punct.html @@ -25,7 +25,7 @@

Synopsis

unspecified punct;
-

Description

+

Description

The punctuation character parser. Matches the full set of Unicode punctuation clases (specifically, "Pc", "Pd", "Pe", "Pf", "Pi", "Ps", and "Po").

diff --git a/doc/html/boost/parser/quoted_string.html b/doc/html/boost/parser/quoted_string.html new file mode 100644 index 00000000..16ac4b41 --- /dev/null +++ b/doc/html/boost/parser/quoted_string.html @@ -0,0 +1,42 @@ + + + +Global quoted_string + + + + + + + + + +
+PrevUpHomeNext +
+
+
+
+

Global quoted_string

+

boost::parser::quoted_string

+
+

Synopsis

+
// In header: <boost/parser/parser.hpp>
+
+constexpr parser_interface< quoted_string_parser<> > quoted_string;
+
+

Description

+

Parses a string delimited by quotation marks. This parser can be used to create parsers that accept one or more specific quotation mark characters. By default, the quotation marks are <lsquo></lsquo><rsquo></rsquo>"'`; an alternate quotation mark can be specified by calling this parser with a single character, or a range of characters. If a range is specified, the opening quote must be one of the characters specified, and the closing quote must match the opening quote. Quotation marks may appear within the string if escaped with a backslash, and a pair of backslashes is treated as a single escaped backslash; all other backslashes cause the parse to fail, unless a symbol table is in use. A symbol table can be provided as a second parameter after the single character or range described above. The symbol table is used to recognize escape sequences. Each escape sequence is a backslash followed by a value in the symbol table. When using a symbol table, any backslash that is not followed by another backslash, the opening quote character, or a symbol from the symbol table will cause the parse to fail. Skipping is disabled during parsing of the entire quoted string, including the quotation marks. There is an expectation point before the closing quotation mark. Produces a std::string attribute.

+
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost/parser/quoted_string_parser.html b/doc/html/boost/parser/quoted_string_parser.html new file mode 100644 index 00000000..ced59b22 --- /dev/null +++ b/doc/html/boost/parser/quoted_string_parser.html @@ -0,0 +1,82 @@ + + + +Struct template quoted_string_parser + + + + + + + + + +
+PrevUpHomeNext +
+
+
+
+

Struct template quoted_string_parser

+

boost::parser::quoted_string_parser

+
+

Synopsis

+
// In header: <boost/parser/parser.hpp>
+
+template<typename Quotes, typename Escapes> 
+struct quoted_string_parser {
+
+  // public member functions
+  constexpr quoted_string_parser() return 
+  parser_interface(quoted_string_parser(std::move(x)));
+  template<parsable_range_like R> 
+    constexpr auto operator()(R &&) const noexcept;
+  template<typename T, typename U> 
+    auto operator()(T, symbols< U > const &) const noexcept;
+  template<parsable_range_like R, typename T> 
+    auto operator()(R &&, symbols< T > const &) const noexcept;
+
+  // public data members
+  Quotes chs_;
+  Escapes escapes_;
+  char32_t ch_;
+};
+
+

Description

+

Matches a string delimited by quotation marks; produces a std::string attribute.

+
+

+quoted_string_parser public member functions

+
    +
  1. constexpr quoted_string_parser() return 
    +parser_interface(quoted_string_parser(std::move(x)));
  2. +
  3. +
    template<parsable_range_like R> 
    +  constexpr auto operator()(R && r) const noexcept;
    +

    Returns a parser_interface containing a quoted_string_parser that accepts any of the values in r as its quotation marks. If the input being matched during the parse is a a sequence of char32_t, the elements of r are transcoded from their presumed encoding to UTF-32 during the comparison. Otherwise, the character begin matched is directly compared to the elements of r.

    +
  4. +
  5. +
    template<typename T, typename U> 
    +  auto operator()(T x, symbols< U > const & escapes) const noexcept;
    +

    Returns a parser_interface containing a quoted_string_parser that uses x as its quotation marks. symbols provides a list of strings that may appear after a backslash to form an escape sequence, and what character(s) each escape sequence represents. Note that "\\"</tt> and <tt>"\ch" are always valid escape sequences.

    +
  6. +
  7. +
    template<parsable_range_like R, typename T> 
    +  auto operator()(R && r, symbols< T > const & escapes) const noexcept;
    +

    Returns a parser_interface containing a quoted_string_parser that accepts any of the values in r as its quotation marks. If the input being matched during the parse is a a sequence of char32_t, the elements of r are transcoded from their presumed encoding to UTF-32 during the comparison. Otherwise, the character begin matched is directly compared to the elements of r. symbols provides a list of strings that may appear after a backslash to form an escape sequence, and what character(s) each escape sequence represents. Note that "\\"</tt> and <tt>"\ch" are always valid escape sequences.

    +
  8. +
+
+
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost/parser/raw.html b/doc/html/boost/parser/raw.html index b60e7f11..5c8499ac 100644 --- a/doc/html/boost/parser/raw.html +++ b/doc/html/boost/parser/raw.html @@ -25,7 +25,7 @@

Synopsis

constexpr directive< raw_parser > raw;
-

Description

+

Description

The raw directive, whose operator[] returns a parser_interface<raw_parser<P>> from a given parser of type parser_interface<P>.

diff --git a/doc/html/boost/parser/raw_parser.html b/doc/html/boost/parser/raw_parser.html index 3758191d..44c244ca 100644 --- a/doc/html/boost/parser/raw_parser.html +++ b/doc/html/boost/parser/raw_parser.html @@ -5,14 +5,14 @@ - - - + + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,46 +21,14 @@

Struct template raw_parser

boost::parser::raw_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename Parser> 
 struct raw_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    BOOST_PARSER_SUBRANGE< Iter > 
-    call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-         Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  Parser parser_;
 };
-

Description

+

Description

Applies the given parser p of type Parser; regardless of the attribute produced by Parser, this parser's attribute is equivalent to _where(ctx) within a semantic action on p. The parse succeeds iff p succeeds.

-
-

-raw_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  BOOST_PARSER_SUBRANGE< Iter > 
    -  call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -       Sentinel last, Context const & context, SkipParser const & skip, 
    -       unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/repeat_directive.html b/doc/html/boost/parser/repeat_directive.html index ba7b27a3..843dc9dc 100644 --- a/doc/html/boost/parser/repeat_directive.html +++ b/doc/html/boost/parser/repeat_directive.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,22 +26,22 @@

Synopsis

template<typename MinType, typename MaxType> struct repeat_directive { - // public member functions + // public member functions template<typename Parser2> - constexpr auto operator[](parser_interface< Parser2 >) const noexcept; + constexpr auto operator[](parser_interface< Parser2 >) const noexcept; // public data members MinType min_; MaxType max_; };
-

Description

+

Description

Represents a repeat_parser as a directive (e.g. repeat[other_parser]).

-

-repeat_directive public member functions

+

+repeat_directive public member functions

  1. template<typename Parser2> 
    -  constexpr auto operator[](parser_interface< Parser2 > rhs) const noexcept;
+ constexpr auto operator[](parser_interface< Parser2 > rhs) const noexcept;
@@ -52,7 +52,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/repeat_idm26699.html b/doc/html/boost/parser/repeat_idm32124.html similarity index 92% rename from doc/html/boost/parser/repeat_idm26699.html rename to doc/html/boost/parser/repeat_idm32124.html index 3a5aca75..174bf9af 100644 --- a/doc/html/boost/parser/repeat_idm26699.html +++ b/doc/html/boost/parser/repeat_idm32124.html @@ -7,15 +7,15 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template repeat

boost::parser::repeat

@@ -26,7 +26,7 @@

Synopsis

template<typename T> constexpr repeat_directive< T, T > repeat(T n);
-

Description

+

Description

Returns a repeat_directive that repeats exactly n times, and whose operator[] returns a parser_interface<repeat_parser<P>> from a given parser of type parser_interface<P>.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/repeat_idm26717.html b/doc/html/boost/parser/repeat_idm32142.html similarity index 85% rename from doc/html/boost/parser/repeat_idm26717.html rename to doc/html/boost/parser/repeat_idm32142.html index d6409c4b..67c63e25 100644 --- a/doc/html/boost/parser/repeat_idm26717.html +++ b/doc/html/boost/parser/repeat_idm32142.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template repeat

boost::parser::repeat

@@ -28,7 +28,7 @@

Synopsis

constexpr repeat_directive< MinType, MaxType > repeat(MinType min_, MaxType max_);
-

Description

+

Description

Returns a repeat_directive that repeats between min_ and max_ times, inclusive, and whose operator[] returns a parser_interface<repeat_parser<P>> from a given parser of type parser_interface<P>.

@@ -39,7 +39,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/repeat_parser.html b/doc/html/boost/parser/repeat_parser.html index c8084cde..ba856d73 100644 --- a/doc/html/boost/parser/repeat_parser.html +++ b/doc/html/boost/parser/repeat_parser.html @@ -5,14 +5,14 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,58 +21,15 @@

Struct template repeat_parser

boost::parser::repeat_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
-template<typename Parser, typename DelimiterParser, typename MinType, 
-         typename MaxType> 
+template<typename Parser, typename DelimiterParser = detail::nope, 
+         typename MinType = int64_t, typename MaxType = int64_t> 
 struct repeat_parser {
-  // construct/copy/destruct
-  repeat_parser(Parser, MinType, MaxType, DelimiterParser = DelimiterParser{});
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  Parser parser_;
-  DelimiterParser delimiter_parser_;
-  MinType min_;
-  MaxType max_;
 };
-

Description

+

Description

Repeats the application of another parser p of type Parser, optionally applying another parser d of type DelimiterParser in between each pair of applications of p. The parse succeeds if p succeeds at least the minumum number of times, and d succeeds each time it is applied. The attribute produced is a sequence of the type of attribute produced by Parser.

-
-

-repeat_parser - public - construct/copy/destruct

-
  1. repeat_parser(Parser parser, MinType _min, MaxType _max, 
    -              DelimiterParser delimiter_parser = DelimiterParser{});
-
-
-

-repeat_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/replace.html b/doc/html/boost/parser/replace.html index f29b467a..f8c151cf 100644 --- a/doc/html/boost/parser/replace.html +++ b/doc/html/boost/parser/replace.html @@ -25,7 +25,7 @@

Synopsis

unspecified replace;
-

Description

+

Description

A range adaptor object ([range.adaptor.object]). Given subexpressions E and P, Q, R, and 'S', each of the expressions replace(E, P), replace(E, P, Q). replace(E, P, Q, R), and replace(E, P, Q, R, S) are expression-equivalent to replace_view(E, P), replace_view(E, P, Q), replace_view(E, P, Q, R), replace_view(E, diff --git a/doc/html/boost/parser/replace_view.html b/doc/html/boost/parser/replace_view.html index 77ee333a..44b4a71e 100644 --- a/doc/html/boost/parser/replace_view.html +++ b/doc/html/boost/parser/replace_view.html @@ -23,9 +23,9 @@

Struct template replace_view

Synopsis

// In header: <boost/parser/replace.hpp>
 
-template<typename V, typename ReplacementV, typename Parser, 
-         typename GlobalState, typename ErrorHandler, typename SkipParser, 
-         typename Enable = std::enable_if_t<            detail::replacement_for<ReplacementV, V> &&            (detail::range_utf_format_v<V> ==             detail::range_utf_format_v<ReplacementV>)> > 
+template<std::ranges::viewable_range V, 
+         std::ranges::viewable_range ReplacementV, typename Parser, 
+         typename GlobalState, typename ErrorHandler, typename SkipParser> 
 struct replace_view {
   // member classes/structs/unions
   template<bool Const> 
@@ -38,67 +38,68 @@ 

Synopsis

typedef unspecified base_type; // construct/copy/destruct - iterator() = default; - iterator(unspecified); + iterator() = default; + iterator(unspecified); - // public member functions - constexpr iterator & operator++(); - constexpr reference_type operator*() const; + // public member functions + constexpr iterator & operator++(); + constexpr reference_type operator*() const; }; template<bool Const> struct sentinel { }; // construct/copy/destruct - replace_view() = default; - replace_view(V, + replace_view() = default; + replace_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, parser_interface< SkipParser > const &, ReplacementV, trace = trace::off); - replace_view(V, + replace_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, ReplacementV, trace = trace::off); - // public member functions - constexpr V base() const; - constexpr V base(); - constexpr V replacement() const; - constexpr V replacement(); - constexpr auto begin(); - constexpr auto end(); - constexpr auto begin() const; - constexpr auto end() const; + // public member functions + constexpr V base() const; + constexpr V base(); + constexpr V replacement() const; + constexpr V replacement(); + constexpr auto begin(); + constexpr auto end(); + constexpr auto begin() const; + constexpr auto end() const; };
-

Description

-

Produces a range of subranges of a given range base. Each subrange is either a subrange of base that does not match the given parser parser, or is the given replacement for a match, replacement.

+

Description

+

Produces a range of subranges of a given range base. Each subrange is either a subrange of base that does not match the given parser parser, or is the given replacement for a match, replacement.

+

In addition to the template parameter constraints, V and ReplacementV must be ranges of char, or must have the same UTF format, and V and ReplacementV must meet the same compatibility requirements as described in std::ranges::join_view.

-

+

replace_view public construct/copy/destruct

    -
  1. replace_view() = default;
  2. -
  3. replace_view(V base, 
    +
  4. replace_view() = default;
  5. +
  6. replace_view(V base, 
                  parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                  parser_interface< SkipParser > const & skip, 
                  ReplacementV replacement, trace trace_mode = trace::off);
  7. -
  8. replace_view(V base, 
    +
  9. replace_view(V base, 
                  parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                  ReplacementV replacement, trace trace_mode = trace::off);
-

-replace_view public member functions

+

+replace_view public member functions

    -
  1. constexpr V base() const;
  2. -
  3. constexpr V base();
  4. -
  5. constexpr V replacement() const;
  6. -
  7. constexpr V replacement();
  8. -
  9. constexpr auto begin();
  10. -
  11. constexpr auto end();
  12. -
  13. constexpr auto begin() const;
  14. -
  15. constexpr auto end() const;
  16. +
  17. constexpr V base() const;
  18. +
  19. constexpr V base();
  20. +
  21. constexpr V replacement() const;
  22. +
  23. constexpr V replacement();
  24. +
  25. constexpr auto begin();
  26. +
  27. constexpr auto end();
  28. +
  29. constexpr auto begin() const;
  30. +
  31. constexpr auto end() const;
diff --git a/doc/html/boost/parser/replace_view/iterator.html b/doc/html/boost/parser/replace_view/iterator.html index a365884f..bc6d61bf 100644 --- a/doc/html/boost/parser/replace_view/iterator.html +++ b/doc/html/boost/parser/replace_view/iterator.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -34,31 +34,31 @@

Synopsis

typedef unspecified base_type; // construct/copy/destruct - iterator() = default; - iterator(unspecified); + iterator() = default; + iterator(unspecified); - // public member functions - constexpr iterator & operator++(); - constexpr reference_type operator*() const; + // public member functions + constexpr iterator & operator++(); + constexpr reference_type operator*() const; };
-

Description

+

Description

-

+

iterator public construct/copy/destruct

    -
  1. iterator() = default;
  2. -
  3. iterator(unspecified parent);
  4. +
  5. iterator() = default;
  6. +
  7. iterator(unspecified parent);
-

-iterator public member functions

+

+iterator public member functions

    -
  1. constexpr iterator & operator++();
  2. -
  3. constexpr reference_type operator*() const;
  4. +
  5. constexpr iterator & operator++();
  6. +
  7. constexpr reference_type operator*() const;
@@ -70,7 +70,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/replace_view/sentinel.html b/doc/html/boost/parser/replace_view/sentinel.html index f80ca022..3c02f519 100644 --- a/doc/html/boost/parser/replace_view/sentinel.html +++ b/doc/html/boost/parser/replace_view/sentinel.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -35,7 +35,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/report_error_idm27472.html b/doc/html/boost/parser/report_error_idm33376.html similarity index 60% rename from doc/html/boost/parser/report_error_idm27472.html rename to doc/html/boost/parser/report_error_idm33376.html index 48639e7e..d07d325f 100644 --- a/doc/html/boost/parser/report_error_idm27472.html +++ b/doc/html/boost/parser/report_error_idm33376.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template _report_error

boost::parser::_report_error

@@ -24,11 +24,11 @@

Synopsis

// In header: <boost/parser/parser_fwd.hpp>
 
 
-template<typename Iter, typename Context> 
+template<std::forward_iterator I, typename Context> 
   void _report_error(Context const & context, std::string_view message, 
-                     Iter location);
+ I location);
-

Description

+

Description

Report that the error described in message occurred at location, using the context's error handler.

@@ -39,7 +39,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/report_error_idm26612.html b/doc/html/boost/parser/report_error_idm33392.html similarity index 61% rename from doc/html/boost/parser/report_error_idm26612.html rename to doc/html/boost/parser/report_error_idm33392.html index dfac823b..0c4aa481 100644 --- a/doc/html/boost/parser/report_error_idm26612.html +++ b/doc/html/boost/parser/report_error_idm33392.html @@ -5,29 +5,29 @@ - - - + + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template _report_error

boost::parser::_report_error

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> 
   void _report_error(Context const & context, std::string_view message);
-

Description

+

Description

Report that the error described in message occurred at _where(context).begin(), using the context's error handler.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/report_warning_idm27487.html b/doc/html/boost/parser/report_warning_idm33404.html similarity index 74% rename from doc/html/boost/parser/report_warning_idm27487.html rename to doc/html/boost/parser/report_warning_idm33404.html index 60a36d9e..f763d6fb 100644 --- a/doc/html/boost/parser/report_warning_idm27487.html +++ b/doc/html/boost/parser/report_warning_idm33404.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template _report_warning

boost::parser::_report_warning

@@ -24,11 +24,11 @@

Synopsis

// In header: <boost/parser/parser_fwd.hpp>
 
 
-template<typename Iter, typename Context> 
+template<std::forward_iterator I, typename Context> 
   void _report_warning(Context const & context, std::string_view message, 
-                       Iter location);
+ I location);
-

Description

+

Description

Report that the warning described in message occurred at location, using the context's error handler.

@@ -39,7 +39,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/report_warning_idm26624.html b/doc/html/boost/parser/report_warning_idm33420.html similarity index 60% rename from doc/html/boost/parser/report_warning_idm26624.html rename to doc/html/boost/parser/report_warning_idm33420.html index e6303dd3..5999f9ad 100644 --- a/doc/html/boost/parser/report_warning_idm26624.html +++ b/doc/html/boost/parser/report_warning_idm33420.html @@ -5,29 +5,29 @@ - - - + + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template _report_warning

boost::parser::_report_warning

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 
 template<typename Context> 
   void _report_warning(Context const & context, std::string_view message);
-

Description

+

Description

Report that the warning described in message occurred at _where(context).begin(), using the context's error handler.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/rethrow_error_handler.html b/doc/html/boost/parser/rethrow_error_handler.html index 4e7f4be4..0f6b99ff 100644 --- a/doc/html/boost/parser/rethrow_error_handler.html +++ b/doc/html/boost/parser/rethrow_error_handler.html @@ -7,12 +7,12 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,30 +26,30 @@

Synopsis

struct rethrow_error_handler { - // public member functions + // public member functions template<typename Iter, typename Sentinel> error_handler_result - operator()(Iter, Sentinel, parse_error< Iter > const &) const; + operator()(Iter, Sentinel, parse_error< Iter > const &) const; template<typename Context, typename Iter> - void diagnose(diagnostic_kind, std::string_view, Context const &, Iter) const; + void diagnose(diagnostic_kind, std::string_view, Context const &, Iter) const; template<typename Context> - void diagnose(diagnostic_kind, std::string_view, Context const &) const; + void diagnose(diagnostic_kind, std::string_view, Context const &) const; };
-

Description

+

Description

An error handler that just re-throws any exception generated by the parse.

-

-rethrow_error_handler public member functions

+

+rethrow_error_handler public member functions

  1. template<typename Iter, typename Sentinel> 
       error_handler_result 
    -  operator()(Iter first, Sentinel last, parse_error< Iter > const & e) const;
  2. + operator()(Iter first, Sentinel last, parse_error< Iter > const & e) const;
  3. template<typename Context, typename Iter> 
    -  void diagnose(diagnostic_kind kind, std::string_view message, 
    +  void diagnose(diagnostic_kind kind, std::string_view message, 
                     Context const & context, Iter it) const;
  4. template<typename Context> 
    -  void diagnose(diagnostic_kind kind, std::string_view message, 
    +  void diagnose(diagnostic_kind kind, std::string_view message, 
                     Context const & context) const;
@@ -62,7 +62,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/rule.html b/doc/html/boost/parser/rule.html index b9b94f87..c1cf5f76 100644 --- a/doc/html/boost/parser/rule.html +++ b/doc/html/boost/parser/rule.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,35 +21,16 @@

Struct template rule

boost::parser::rule

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
-template<typename TagType, typename Attribute, typename LocalState, 
-         typename ParamsTuple> 
-struct rule : public boost::parser::parser_interface< rule_parser< false, TagType, Attribute, LocalState, ParamsTuple > >
-{
-  // construct/copy/destruct
-  rule(char const *);
-
-  // public member functions
-  template<typename T, typename... Ts> 
-    constexpr auto with(T &&, Ts &&...) const;
+template<typename TagType, typename Attribute = no_attribute, 
+         typename LocalState = no_local_state, 
+         typename ParamsTuple = no_params> 
+struct rule {
 };
-

Description

+

Description

A type used to declare named parsing rules. The TagType template parameter is used to associate a particular rule with the rule_parser used during parsing.

-
-

-rule - public - construct/copy/destruct

-
  1. rule(char const * diagnostic_text);
-
-
-

-rule public member functions

-
  1. template<typename T, typename... Ts> 
    -  constexpr auto with(T && x, Ts &&... xs) const;
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/rule_parser.html b/doc/html/boost/parser/rule_parser.html index 8165fd15..7369e83e 100644 --- a/doc/html/boost/parser/rule_parser.html +++ b/doc/html/boost/parser/rule_parser.html @@ -5,14 +5,14 @@ - + - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,50 +21,15 @@

Struct template rule_parser

boost::parser::rule_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<bool CanUseCallbacks, typename TagType, typename Attribute, 
          typename LocalState, typename ParamsTuple> 
 struct rule_parser {
-  // types
-  typedef TagType    tag_type;   
-  typedef Attribute  attr_type;  
-  typedef LocalState locals_type;
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute_> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute_ &) const;
-
-  // public data members
-  std::string_view diagnostic_text_;
-  ParamsTuple params_;
 };
-

Description

+

Description

Applies another parser p, associated with this parser via TagType. The attribute produced is Attribute. Both a default-constructed object of type LocalState, and a default-constructed object of type ParamsTuple, are added to the parse context before the associated parser is applied. The parse succeeds iff p succeeds. If CanUseCallbacks is true, and if this parser is used within a call to callback_parse(), the attribute is produced via callback; otherwise, the attribute is produced as normal (as a return value, or as an out-param). The rule may be constructed with user-friendly diagnostic text that will appear if the top-level parse is executed with trace_mode == boost::parser::trace::on.

-
-

-rule_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute_> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute_ & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/search_all.html b/doc/html/boost/parser/search_all.html index ebec9ab7..ceaa8279 100644 --- a/doc/html/boost/parser/search_all.html +++ b/doc/html/boost/parser/search_all.html @@ -7,12 +7,12 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -25,7 +25,7 @@

Synopsis

unspecified search_all;
-

Description

+

Description

A range adaptor object ([range.adaptor.object]). Given subexpressions E and P, Q, and R, each of the expressions search_all(E, P), search_all(E, P, Q), and search_all(E, P, Q, R) are expression-equivalent to search_all_view(E, P), search_all_view(E, P, Q), and search_all_view(E, P, Q, R), respectively.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/search_all_view.html b/doc/html/boost/parser/search_all_view.html index d4a2f0e5..e4e32c85 100644 --- a/doc/html/boost/parser/search_all_view.html +++ b/doc/html/boost/parser/search_all_view.html @@ -23,7 +23,7 @@

Struct template search_all_view

Synopsis

// In header: <boost/parser/search.hpp>
 
-template<typename V, typename Parser, typename GlobalState, 
+template<std::ranges::viewable_range V, typename Parser, typename GlobalState, 
          typename ErrorHandler, typename SkipParser> 
 struct search_all_view {
   // member classes/structs/unions
@@ -35,63 +35,62 @@ 

Synopsis

typedef unspecified base_type; // construct/copy/destruct - iterator() = default; - iterator(unspecified); + iterator() = default; + iterator(unspecified); - // public member functions - constexpr iterator & operator++(); - constexpr BOOST_PARSER_SUBRANGE< I > operator*() const; + // public member functions + constexpr iterator & operator++(); + constexpr BOOST_PARSER_SUBRANGE< I > operator*() const; }; template<bool Const> struct sentinel { }; // construct/copy/destruct - search_all_view() = default; - search_all_view(V, + search_all_view() = default; + search_all_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, parser_interface< SkipParser > const &, trace = trace::off); - search_all_view(V, + search_all_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, trace = trace::off); - // public member functions - constexpr V base() const; - constexpr V base(); - constexpr auto begin(); - constexpr auto end(); - constexpr auto begin() const; - constexpr auto end() const; + // public member functions + constexpr V base() const; + constexpr V base(); + constexpr auto begin(); + constexpr auto end(); + constexpr auto begin() const; + constexpr auto end() const; };
-

Description

-

Produces a sequence of subranges of the underlying sequence of type V. Each subrange is a nonoverlapping match of the given parser, using a skip-parser if provided.
-

+

Description

+

Produces a sequence of subranges of the underlying sequence of type V. Each subrange is a nonoverlapping match of the given parser, using a skip-parser if provided.

-

+

search_all_view public construct/copy/destruct

    -
  1. search_all_view() = default;
  2. -
  3. search_all_view(V base, 
    +
  4. search_all_view() = default;
  5. +
  6. search_all_view(V base, 
                     parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                     parser_interface< SkipParser > const & skip, 
                     trace trace_mode = trace::off);
  7. -
  8. search_all_view(V base, 
    +
  9. search_all_view(V base, 
                     parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                     trace trace_mode = trace::off);
-

-search_all_view public member functions

+

+search_all_view public member functions

    -
  1. constexpr V base() const;
  2. -
  3. constexpr V base();
  4. -
  5. constexpr auto begin();
  6. -
  7. constexpr auto end();
  8. -
  9. constexpr auto begin() const;
  10. -
  11. constexpr auto end() const;
  12. +
  13. constexpr V base() const;
  14. +
  15. constexpr V base();
  16. +
  17. constexpr auto begin();
  18. +
  19. constexpr auto end();
  20. +
  21. constexpr auto begin() const;
  22. +
  23. constexpr auto end() const;
diff --git a/doc/html/boost/parser/search_all_view/iterator.html b/doc/html/boost/parser/search_all_view/iterator.html index f87526af..f5790a46 100644 --- a/doc/html/boost/parser/search_all_view/iterator.html +++ b/doc/html/boost/parser/search_all_view/iterator.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -32,31 +32,31 @@

Synopsis

typedef unspecified base_type; // construct/copy/destruct - iterator() = default; - iterator(unspecified); + iterator() = default; + iterator(unspecified); - // public member functions - constexpr iterator & operator++(); - constexpr BOOST_PARSER_SUBRANGE< I > operator*() const; + // public member functions + constexpr iterator & operator++(); + constexpr BOOST_PARSER_SUBRANGE< I > operator*() const; };
-

Description

+

Description

-

+

iterator public construct/copy/destruct

    -
  1. iterator() = default;
  2. -
  3. iterator(unspecified parent);
  4. +
  5. iterator() = default;
  6. +
  7. iterator(unspecified parent);
-

-iterator public member functions

+

+iterator public member functions

    -
  1. constexpr iterator & operator++();
  2. -
  3. constexpr BOOST_PARSER_SUBRANGE< I > operator*() const;
  4. +
  5. constexpr iterator & operator++();
  6. +
  7. constexpr BOOST_PARSER_SUBRANGE< I > operator*() const;
@@ -68,7 +68,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/search_all_view/sentinel.html b/doc/html/boost/parser/search_all_view/sentinel.html index b30a4242..8059ce10 100644 --- a/doc/html/boost/parser/search_all_view/sentinel.html +++ b/doc/html/boost/parser/search_all_view/sentinel.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -35,7 +35,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/search_idm27778.html b/doc/html/boost/parser/search_idm33715.html similarity index 79% rename from doc/html/boost/parser/search_idm27778.html rename to doc/html/boost/parser/search_idm33715.html index 6f819077..7a699c5b 100644 --- a/doc/html/boost/parser/search_idm27778.html +++ b/doc/html/boost/parser/search_idm33715.html @@ -7,15 +7,15 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template search

boost::parser::search

@@ -24,15 +24,14 @@

Synopsis

// In header: <boost/parser/search.hpp>
 
 
-template<typename R, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename SkipParser, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser, typename GlobalState, 
+         typename ErrorHandler, typename SkipParser> 
   auto search(R && r, 
               parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
               parser_interface< SkipParser > const & skip, 
               trace trace_mode = trace::off);
-

Description

+

Description

Returns a subrange to the first match for parser parser in r, using skip-parser skip. This function has a similar interface and semantics to std::ranges::search(). Returns std::ranges::dangling in C++20 and later if r is a non-borrowable rvalue.

@@ -43,7 +42,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/search_idm27807.html b/doc/html/boost/parser/search_idm33743.html similarity index 67% rename from doc/html/boost/parser/search_idm27807.html rename to doc/html/boost/parser/search_idm33743.html index 711589bd..34f73b0a 100644 --- a/doc/html/boost/parser/search_idm27807.html +++ b/doc/html/boost/parser/search_idm33743.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template search

boost::parser::search

@@ -24,15 +24,15 @@

Synopsis

// In header: <boost/parser/search.hpp>
 
 
-template<typename I, typename S, typename Parser, typename SkipParser, 
-         typename GlobalState, typename ErrorHandler, 
-         typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
+template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
+         typename SkipParser, typename GlobalState, 
+         error_handler< I, S, GlobalState > ErrorHandler> 
   auto search(I first, S last, 
               parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
               parser_interface< SkipParser > const & skip, 
               trace trace_mode = trace::off);
-

Description

+

Description

Returns a subrange to the first match for parser parser in [first, last), using skip-parser skip. This function has a similar interface and semantics to std::ranges::search().

@@ -43,7 +43,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/search_idm27837.html b/doc/html/boost/parser/search_idm33774.html similarity index 74% rename from doc/html/boost/parser/search_idm27837.html rename to doc/html/boost/parser/search_idm33774.html index 355c0543..77f31072 100644 --- a/doc/html/boost/parser/search_idm27837.html +++ b/doc/html/boost/parser/search_idm33774.html @@ -6,16 +6,16 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template search

boost::parser::search

@@ -24,14 +24,13 @@

Synopsis

// In header: <boost/parser/search.hpp>
 
 
-template<typename R, typename Parser, typename GlobalState, 
-         typename ErrorHandler, 
-         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
+template<parsable_range_like R, typename Parser, typename GlobalState, 
+         typename ErrorHandler> 
   auto search(R && r, 
               parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
               trace trace_mode = trace::off);
-

Description

+

Description

Returns a subrange to the first match for parser parser in r. This function has a similar interface and semantics to std::ranges::search(). Returns std::ranges::dangling in C++20 and later if r is a non-borrowable rvalue.

@@ -42,7 +41,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/search_idm27861.html b/doc/html/boost/parser/search_idm33797.html similarity index 70% rename from doc/html/boost/parser/search_idm27861.html rename to doc/html/boost/parser/search_idm33797.html index d41660cb..86ab7e3b 100644 --- a/doc/html/boost/parser/search_idm27861.html +++ b/doc/html/boost/parser/search_idm33797.html @@ -6,16 +6,16 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template search

boost::parser::search

@@ -24,14 +24,14 @@

Synopsis

// In header: <boost/parser/search.hpp>
 
 
-template<typename I, typename S, typename Parser, typename GlobalState, 
-         typename ErrorHandler, 
-         typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
+template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
+         typename GlobalState, 
+         error_handler< I, S, GlobalState > ErrorHandler> 
   auto search(I first, S last, 
               parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
               trace trace_mode = trace::off);
-

Description

+

Description

Returns a subrange to the first match for parser parser in [first, last). This function has a similar interface and semantics to std::ranges::search().

@@ -42,7 +42,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/separate.html b/doc/html/boost/parser/separate.html index e580fdd0..eea929a0 100644 --- a/doc/html/boost/parser/separate.html +++ b/doc/html/boost/parser/separate.html @@ -25,7 +25,7 @@

Synopsis

constexpr separate_directive separate;
-

Description

+

Description

The separate_directive, whose operator[] returns a parser_interface<P2>, from a given parser of type parser_interface<P>, where P is a seq_parser. P2 is the same as P, except that its CombiningGroups template parameter is replaced with a tag type that prevents each subparser's attribute from merging with any other subparser's attribute.

diff --git a/doc/html/boost/parser/separate_directive.html b/doc/html/boost/parser/separate_directive.html index 15d477a6..77de75d1 100644 --- a/doc/html/boost/parser/separate_directive.html +++ b/doc/html/boost/parser/separate_directive.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,22 +26,22 @@

Synopsis

struct separate_directive { - // public member functions + // public member functions template<typename ParserTuple, typename BacktrackingTuple, typename CombiningGroups> constexpr auto - operator[](parser_interface< seq_parser< ParserTuple, BacktrackingTuple, CombiningGroups > >) const noexcept; + operator[](parser_interface< seq_parser< ParserTuple, BacktrackingTuple, CombiningGroups > >) const noexcept; };
-

Description

+

Description

A directive type that can only be used on sequence parsers, that prevents each of the sequence_parser's subparser's attributes from merging with any other subparser's attribute.

-

-separate_directive public member functions

+

+separate_directive public member functions

  1. template<typename ParserTuple, typename BacktrackingTuple, 
              typename CombiningGroups> 
       constexpr auto 
    -  operator[](parser_interface< seq_parser< ParserTuple, BacktrackingTuple, CombiningGroups > > rhs) const noexcept;
+ operator[](parser_interface< seq_parser< ParserTuple, BacktrackingTuple, CombiningGroups > > rhs) const noexcept;
@@ -52,7 +52,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/seq_parser.html b/doc/html/boost/parser/seq_parser.html index 4880aac1..82fc893c 100644 --- a/doc/html/boost/parser/seq_parser.html +++ b/doc/html/boost/parser/seq_parser.html @@ -5,14 +5,14 @@ - - - + + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,58 +21,15 @@

Struct template seq_parser

boost::parser::seq_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename ParserTuple, typename BacktrackingTuple, 
          typename CombiningGroups> 
 struct seq_parser {
-  // types
-  typedef BacktrackingTuple backtracking;    
-  typedef CombiningGroups   combining_groups;
-
-  // construct/copy/destruct
-  seq_parser(ParserTuple);
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  ParserTuple parsers_;
 };
-

Description

+

Description

Applies each parser in ParserTuple, in order. The parse succeeds iff all of the sub-parsers succeed. The attribute produced is a std::tuple over the types of attribute produced by the parsers in ParserTuple. The BacktrackingTuple template parameter is a parser::tuple of std::bool_constant values. The ith such value indicates whether backtracking is allowed if the ith parser fails.

-
-

-seq_parser - public - construct/copy/destruct

-
  1. seq_parser(ParserTuple parsers);
-
-
-

-seq_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first_, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first_, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/short_.html b/doc/html/boost/parser/short_.html index 69b7606a..07067c3f 100644 --- a/doc/html/boost/parser/short_.html +++ b/doc/html/boost/parser/short_.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< int_parser< short > > short_;
-

Description

+

Description

The short parser. Produces a short attribute. To parse a particular value x, use short_(x).

diff --git a/doc/html/boost/parser/skip.html b/doc/html/boost/parser/skip.html index b2dada31..ba71b64d 100644 --- a/doc/html/boost/parser/skip.html +++ b/doc/html/boost/parser/skip.html @@ -25,7 +25,7 @@

Synopsis

constexpr skip_directive skip;
-

Description

+

Description

The skip_directive, whose operator[] returns a parser_interface<skip_parser<P>> from a given parser of type parser_interface<P>.

diff --git a/doc/html/boost/parser/skip_directive.html b/doc/html/boost/parser/skip_directive.html index 103340f4..1abe1817 100644 --- a/doc/html/boost/parser/skip_directive.html +++ b/doc/html/boost/parser/skip_directive.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,28 +26,28 @@

Synopsis

template<typename SkipParser = detail::nope> struct skip_directive { - // public member functions + // public member functions template<typename Parser> - constexpr auto operator[](parser_interface< Parser >) const noexcept; + constexpr auto operator[](parser_interface< Parser >) const noexcept; template<typename SkipParser2> - constexpr auto operator()(parser_interface< SkipParser2 >) const noexcept; + constexpr auto operator()(parser_interface< SkipParser2 >) const noexcept; // public data members SkipParser skip_parser_; };
-

Description

+

Description

Represents a skip parser as a directive. When used without a skip parser, e.g. skip[parser_in_which_to_do_skipping], the skipper for the entire parse is used. When given another parser, e.g. skip(skip_parser)[parser_in_which_to_do_skipping], that other parser is used as the skipper within the directive.

-

-skip_directive public member functions

+

+skip_directive public member functions

  1. template<typename Parser> 
    -  constexpr auto operator[](parser_interface< Parser > rhs) const noexcept;
  2. + constexpr auto operator[](parser_interface< Parser > rhs) const noexcept;
  3. template<typename SkipParser2> 
       constexpr auto 
    -  operator()(parser_interface< SkipParser2 > skip_parser) const noexcept;
    + operator()(parser_interface< SkipParser2 > skip_parser) const noexcept;

    Returns a skip_directive with skip_parser as its skipper.

@@ -61,7 +61,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/skip_parser.html b/doc/html/boost/parser/skip_parser.html index d8edf5dd..94593199 100644 --- a/doc/html/boost/parser/skip_parser.html +++ b/doc/html/boost/parser/skip_parser.html @@ -5,14 +5,14 @@ - - - + + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,45 +21,14 @@

Struct template skip_parser

boost::parser::skip_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
-template<typename Parser, typename SkipParser> 
+template<typename Parser, typename SkipParser = detail::nope> 
 struct skip_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser_> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser_ const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser_, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser_ const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  Parser parser_;
-  SkipParser skip_parser_;
 };
-

Description

+

Description

Applies the given parser p of type Parser, using a parser of type SkipParser as the skipper. The parse succeeds iff p succeeds. The attribute produced is the type of attribute produced by Parser.

-
-

-skip_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser_> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser_ const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser_, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser_ const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/sorted.html b/doc/html/boost/parser/sorted.html index 3b825691..a9992b05 100644 --- a/doc/html/boost/parser/sorted.html +++ b/doc/html/boost/parser/sorted.html @@ -7,12 +7,12 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -32,7 +32,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/sorted_t.html b/doc/html/boost/parser/sorted_t.html index 43f026eb..01ccc076 100644 --- a/doc/html/boost/parser/sorted_t.html +++ b/doc/html/boost/parser/sorted_t.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -27,7 +27,7 @@

Synopsis

struct sorted_t { };
-

Description

+

Description

A tag type that can be passed as the first parameter to char_() when the second parameter is a sorted, random access sequence that can be matched using a binary search.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/split.html b/doc/html/boost/parser/split.html index e5d59463..ec3e7f9a 100644 --- a/doc/html/boost/parser/split.html +++ b/doc/html/boost/parser/split.html @@ -25,7 +25,7 @@

Synopsis

unspecified split;
-

Description

+

Description

A range adaptor object ([range.adaptor.object]). Given subexpressions E and P, Q, and R, each of the expressions split(E, P), split(E, P, Q), and split(E, P, Q, R) are expression-equivalent to split_view(E, P), split_view(E, P, Q), and split_view(E, P, Q, R), respectively.

diff --git a/doc/html/boost/parser/split_view.html b/doc/html/boost/parser/split_view.html index d9027cb9..6cea0ce2 100644 --- a/doc/html/boost/parser/split_view.html +++ b/doc/html/boost/parser/split_view.html @@ -23,7 +23,7 @@

Struct template split_view

Synopsis

// In header: <boost/parser/split.hpp>
 
-template<typename V, typename Parser, typename GlobalState, 
+template<std::ranges::viewable_range V, typename Parser, typename GlobalState, 
          typename ErrorHandler, typename SkipParser> 
 struct split_view {
   // member classes/structs/unions
@@ -35,61 +35,60 @@ 

Synopsis

typedef unspecified base_type; // construct/copy/destruct - iterator() = default; - iterator(unspecified); + iterator() = default; + iterator(unspecified); - // public member functions - constexpr iterator & operator++(); - constexpr BOOST_PARSER_SUBRANGE< I > operator*() const; + // public member functions + constexpr iterator & operator++(); + constexpr BOOST_PARSER_SUBRANGE< I > operator*() const; }; template<bool Const> struct sentinel { }; // construct/copy/destruct - split_view() = default; - split_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, + split_view() = default; + split_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, parser_interface< SkipParser > const &, trace = trace::off); - split_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, + split_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, trace = trace::off); - // public member functions - constexpr V base() const; - constexpr V base(); - constexpr auto begin(); - constexpr auto end(); - constexpr auto begin() const; - constexpr auto end() const; + // public member functions + constexpr V base() const; + constexpr V base(); + constexpr auto begin(); + constexpr auto end(); + constexpr auto begin() const; + constexpr auto end() const; };
-

Description

-

Produces a sequence of subranges of the underlying sequence of type V. the underlying sequence is split into subranges delimited by matches of the given parser, possibly using a given skip-parser.
-

+

Description

+

Produces a sequence of subranges of the underlying sequence of type V. the underlying sequence is split into subranges delimited by matches of the given parser, possibly using a given skip-parser.

-

+

split_view public construct/copy/destruct

    -
  1. split_view() = default;
  2. -
  3. split_view(V base, 
    +
  4. split_view() = default;
  5. +
  6. split_view(V base, 
                parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                parser_interface< SkipParser > const & skip, 
                trace trace_mode = trace::off);
  7. -
  8. split_view(V base, 
    +
  9. split_view(V base, 
                parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                trace trace_mode = trace::off);
-

-split_view public member functions

+

+split_view public member functions

    -
  1. constexpr V base() const;
  2. -
  3. constexpr V base();
  4. -
  5. constexpr auto begin();
  6. -
  7. constexpr auto end();
  8. -
  9. constexpr auto begin() const;
  10. -
  11. constexpr auto end() const;
  12. +
  13. constexpr V base() const;
  14. +
  15. constexpr V base();
  16. +
  17. constexpr auto begin();
  18. +
  19. constexpr auto end();
  20. +
  21. constexpr auto begin() const;
  22. +
  23. constexpr auto end() const;
diff --git a/doc/html/boost/parser/split_view/iterator.html b/doc/html/boost/parser/split_view/iterator.html index d5960047..13fc5079 100644 --- a/doc/html/boost/parser/split_view/iterator.html +++ b/doc/html/boost/parser/split_view/iterator.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -32,31 +32,31 @@

Synopsis

typedef unspecified base_type; // construct/copy/destruct - iterator() = default; - iterator(unspecified); + iterator() = default; + iterator(unspecified); - // public member functions - constexpr iterator & operator++(); - constexpr BOOST_PARSER_SUBRANGE< I > operator*() const; + // public member functions + constexpr iterator & operator++(); + constexpr BOOST_PARSER_SUBRANGE< I > operator*() const; };
-

Description

+

Description

-

+

iterator public construct/copy/destruct

    -
  1. iterator() = default;
  2. -
  3. iterator(unspecified parent);
  4. +
  5. iterator() = default;
  6. +
  7. iterator(unspecified parent);
-

-iterator public member functions

+

+iterator public member functions

    -
  1. constexpr iterator & operator++();
  2. -
  3. constexpr BOOST_PARSER_SUBRANGE< I > operator*() const;
  4. +
  5. constexpr iterator & operator++();
  6. +
  7. constexpr BOOST_PARSER_SUBRANGE< I > operator*() const;
@@ -68,7 +68,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/split_view/sentinel.html b/doc/html/boost/parser/split_view/sentinel.html index fd2a82ae..064d3ab9 100644 --- a/doc/html/boost/parser/split_view/sentinel.html +++ b/doc/html/boost/parser/split_view/sentinel.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -35,7 +35,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/stream_error_handler.html b/doc/html/boost/parser/stream_error_handler.html index 8ea37dc7..e584226a 100644 --- a/doc/html/boost/parser/stream_error_handler.html +++ b/doc/html/boost/parser/stream_error_handler.html @@ -26,71 +26,71 @@

Synopsis

struct stream_error_handler { // construct/copy/destruct - stream_error_handler(); - stream_error_handler(std::string_view); - stream_error_handler(std::string_view, std::ostream &); - stream_error_handler(std::string_view, std::ostream &, std::ostream &); - stream_error_handler(std::wstring_view); - stream_error_handler(std::wstring_view, std::ostream &); - stream_error_handler(std::wstring_view, std::ostream &, std::ostream &); + stream_error_handler(); + stream_error_handler(std::string_view); + stream_error_handler(std::string_view, std::ostream &); + stream_error_handler(std::string_view, std::ostream &, std::ostream &); + stream_error_handler(std::wstring_view); + stream_error_handler(std::wstring_view, std::ostream &); + stream_error_handler(std::wstring_view, std::ostream &, std::ostream &); - // public member functions + // public member functions template<typename Iter, typename Sentinel> error_handler_result - operator()(Iter, Sentinel, parse_error< Iter > const &) const; + operator()(Iter, Sentinel, parse_error< Iter > const &) const; template<typename Context, typename Iter> - void diagnose(diagnostic_kind, std::string_view, Context const &, Iter) const; + void diagnose(diagnostic_kind, std::string_view, Context const &, Iter) const; template<typename Context> - void diagnose(diagnostic_kind, std::string_view, Context const &) const; + void diagnose(diagnostic_kind, std::string_view, Context const &) const; };
-

Description

+

Description

Prints warnings and errors to the std::ostreams provided by the user, or std::cerr if neither stream is specified. If a filename is provided, that is used to print all diagnostics.

-

+

stream_error_handler public construct/copy/destruct

    -
  1. stream_error_handler();
  2. -
  3. stream_error_handler(std::string_view filename);
  4. -
  5. stream_error_handler(std::string_view filename, std::ostream & errors);
  6. -
  7. stream_error_handler(std::string_view filename, std::ostream & errors, 
    +
  8. stream_error_handler();
  9. +
  10. stream_error_handler(std::string_view filename);
  11. +
  12. stream_error_handler(std::string_view filename, std::ostream & errors);
  13. +
  14. stream_error_handler(std::string_view filename, std::ostream & errors, 
                          std::ostream & warnings);
  15. -
    stream_error_handler(std::wstring_view filename);
    +
    stream_error_handler(std::wstring_view filename);

    This overload is Windows-only.

  16. -
    stream_error_handler(std::wstring_view filename, std::ostream & errors);
    +
    stream_error_handler(std::wstring_view filename, std::ostream & errors);

    This overload is Windows-only.

  17. -
    stream_error_handler(std::wstring_view filename, std::ostream & errors, 
    +
    stream_error_handler(std::wstring_view filename, std::ostream & errors, 
                          std::ostream & warnings);

    This overload is Windows-only.

-

-stream_error_handler public member functions

+

+stream_error_handler public member functions

  1. template<typename Iter, typename Sentinel> 
       error_handler_result 
    -  operator()(Iter first, Sentinel last, parse_error< Iter > const & e) const;
    + operator()(Iter first, Sentinel last, parse_error< Iter > const & e) const;

    Handles a parse_error exception thrown during parsing. A formatted parse-expectation failure is printed to *err_os_ when err_os_ is non-null, or std::cerr otherwise. Always returns error_handler_result::fail.

  2. template<typename Context, typename Iter> 
    -  void diagnose(diagnostic_kind kind, std::string_view message, 
    +  void diagnose(diagnostic_kind kind, std::string_view message, 
                     Context const & context, Iter it) const;

    Let std::ostream * s = kind == diagnostic_kind::error : err_os_ : warn_os_; prints message to *s when s is non-null, or std::cerr otherwise. The diagnostic is printed with the given kind, indicating the location as being at it. This must be called within a parser semantic action, providing the parse context.

  3. template<typename Context> 
    -  void diagnose(diagnostic_kind kind, std::string_view message, 
    +  void diagnose(diagnostic_kind kind, std::string_view message, 
                     Context const & context) const;

    Let std::ostream * s = kind == diagnostic_kind::error : err_os_ : warn_os_; prints message to *s when s is non-null, or std::cerr otherwise. The diagnostic is printed with the given kind, at no particular location. This must be called within a parser semantic action, providing the parse context.

  4. diff --git a/doc/html/boost/parser/string.html b/doc/html/boost/parser/string.html index c03714b7..6da585e4 100644 --- a/doc/html/boost/parser/string.html +++ b/doc/html/boost/parser/string.html @@ -6,13 +6,13 @@ - - + +
    -PrevUpHomeNext +PrevUpHomeNext
    @@ -24,9 +24,9 @@

    Synopsis

    // In header: <boost/parser/parser.hpp>
     
     
    -template<typename R> constexpr auto string(R && str);
    +template<parsable_range_like R> constexpr auto string(R && str);
    -

    Description

    +

    Description

    Returns a parser that matches str that produces the matched string as its attribute.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/string_parser.html b/doc/html/boost/parser/string_parser.html index 458d5392..c0d2fee0 100644 --- a/doc/html/boost/parser/string_parser.html +++ b/doc/html/boost/parser/string_parser.html @@ -5,14 +5,14 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,64 +21,14 @@

Struct template string_parser

boost::parser::string_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename StrIter, typename StrSentinel> 
 struct string_parser {
-  // construct/copy/destruct
-  string_parser();
-  template<typename R, 
-           typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
-    string_parser(R &&);
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    std::string call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-                     Context const &, SkipParser const &, unspecified, 
-                     bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  StrIter expected_first_;
-  StrSentinel expected_last_;
 };
-

Description

-

Maches a particular string, delimited by an iterator sentinel pair; produces no attribute.

-
-

-string_parser - public - construct/copy/destruct

-
    -
  1. string_parser();
  2. -
  3. template<typename R, 
    -         typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -  string_parser(R && r);
  4. -
-
-
-

-string_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  std::string call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -                   Sentinel last, Context const & context, 
    -                   SkipParser const & skip, unspecified flags, 
    -                   bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-
+

Description

+

Matches a particular string, delimited by an iterator sentinel pair; produces no attribute.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/string_view.html b/doc/html/boost/parser/string_view.html index 36f4471a..972c9937 100644 --- a/doc/html/boost/parser/string_view.html +++ b/doc/html/boost/parser/string_view.html @@ -25,7 +25,7 @@

Synopsis

constexpr directive< string_view_parser > string_view;
-

Description

+

Description

The string_view directive, whose operator[] returns a parser_interface<string_view_parser<P>> from a given parser of type parser_interface<P>. This is only available in C++20 and later.

diff --git a/doc/html/boost/parser/string_view_parser.html b/doc/html/boost/parser/string_view_parser.html index 331a543b..f9a4efc8 100644 --- a/doc/html/boost/parser/string_view_parser.html +++ b/doc/html/boost/parser/string_view_parser.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,44 +21,14 @@

Struct template string_view_parser

boost::parser::string_view_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename Parser> 
 struct string_view_parser {
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-
-  // public data members
-  Parser parser_;
 };
-

Description

+

Description

Applies the given parser p of type Parser. Regardless of the attribute produced by Parser, this parser's attribute is equivalent to std::basic_string_view<char_type> within a semantic action on p, where char_type is the type of character in the sequence being parsed. If the parsed range is transcoded, char_type will be the type being transcoded from. If the underlying range of char_type is non-contiguous, code using string_view_parser is ill-formed. The parse succeeds iff p succeeds. This parser is only available in C++20 and later.

-
-

-string_view_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/subrange.html b/doc/html/boost/parser/subrange.html index 47a111d6..20df3e34 100644 --- a/doc/html/boost/parser/subrange.html +++ b/doc/html/boost/parser/subrange.html @@ -23,49 +23,49 @@

Struct template subrange

Synopsis

// In header: <boost/parser/subrange.hpp>
 
-template<typename I, typename S = I> 
+template<std::forward_iterator I, std::sentinel_for< I > S = I> 
 struct subrange {
   // construct/copy/destruct
-  subrange() = default;
-  subrange(I, S);
-  template<typename R> explicit subrange(R const &);
+  subrange() = default;
+  subrange(I, S);
+  template<typename R> explicit subrange(R const &);
 
-  // public member functions
-  constexpr I begin() const;
-  constexpr S end() const;
-  constexpr subrange next(std::ptrdiff_t = 1) const;
-  constexpr subrange prev(std::ptrdiff_t = 1) const;
-  constexpr subrange & advance(std::ptrdiff_t);
+  // public member functions
+  constexpr I begin() const;
+  constexpr S end() const;
+  constexpr subrange next(std::ptrdiff_t = 1) const;
+  constexpr subrange prev(std::ptrdiff_t = 1) const;
+  constexpr subrange & advance(std::ptrdiff_t);
   template<typename I2, typename S2, 
            typename Enable = std::enable_if_t<                std::is_convertible<I, I2>::value &&                std::is_convertible<S, S2>::value> > 
-    constexpr operator subrange< I2, S2 >() const;
+    constexpr operator subrange< I2, S2 >() const;
 };
-

Description

+

Description

A simple view type used throughout the rest of the library in C++17 builds; similar to std::ranges::subrange.

-

+

subrange public construct/copy/destruct

    -
  1. subrange() = default;
  2. -
  3. subrange(I first, S last);
  4. -
  5. template<typename R> explicit subrange(R const & r);
  6. +
  7. subrange() = default;
  8. +
  9. subrange(I first, S last);
  10. +
  11. template<typename R> explicit subrange(R const & r);
-

-subrange public member functions

+

+subrange public member functions

    -
  1. constexpr I begin() const;
  2. -
  3. constexpr S end() const;
  4. -
  5. constexpr subrange next(std::ptrdiff_t n = 1) const;
  6. -
  7. constexpr subrange prev(std::ptrdiff_t n = 1) const;
  8. -
  9. constexpr subrange & advance(std::ptrdiff_t n);
  10. +
  11. constexpr I begin() const;
  12. +
  13. constexpr S end() const;
  14. +
  15. constexpr subrange next(std::ptrdiff_t n = 1) const;
  16. +
  17. constexpr subrange prev(std::ptrdiff_t n = 1) const;
  18. +
  19. constexpr subrange & advance(std::ptrdiff_t n);
  20. template<typename I2, typename S2, 
              typename Enable = std::enable_if_t<                std::is_convertible<I, I2>::value &&                std::is_convertible<S, S2>::value> > 
    -  constexpr operator subrange< I2, S2 >() const;
  21. + constexpr operator subrange< I2, S2 >() const;
diff --git a/doc/html/boost/parser/switch_.html b/doc/html/boost/parser/switch_.html index 64849804..d64e5c39 100644 --- a/doc/html/boost/parser/switch_.html +++ b/doc/html/boost/parser/switch_.html @@ -7,12 +7,12 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,7 +26,7 @@

Synopsis

template<typename T> constexpr auto switch_(T x);
-

Description

+

Description

Returns a switch-like parser. The resulting parser uses the given value x to select one of the following value/parser pairs, and to apply the selected parser. x may be a value to be used directly, or a unary invocable that takes a reference to the parse context, and returns the value to use. You can add more value/parser cases to the returned parser, using its call operator, e.g. switch_(x)(y1, p1)(y2, p2). As with the x passed to this function, each yN value can be a value or a unary invocable.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/switch_parser.html b/doc/html/boost/parser/switch_parser.html index bda8b280..57f5f9e4 100644 --- a/doc/html/boost/parser/switch_parser.html +++ b/doc/html/boost/parser/switch_parser.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,69 +21,14 @@

Struct template switch_parser

boost::parser::switch_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
-template<typename SwitchValue, typename OrParser> 
+template<typename SwitchValue, typename OrParser = detail::nope> 
 struct switch_parser {
-  // construct/copy/destruct
-  switch_parser();
-  switch_parser(SwitchValue);
-  switch_parser(SwitchValue, OrParser);
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    auto call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-  template<typename Value, typename Parser2> 
-    constexpr auto 
-    operator()(Value, parser_interface< Parser2 >) const noexcept;
-
-  // public data members
-  SwitchValue switch_value_;
-  OrParser or_parser_;
 };
-

Description

+

Description

Applies at most one of the parsers in OrParser. If switch_value_ matches one or more of the values in the parsers in OrParser, the first such parser is applied, and the success or failure and attribute of the parse are those of the applied parser. Otherwise, the parse fails.

-
-

-switch_parser - public - construct/copy/destruct

-
    -
  1. switch_parser();
  2. -
  3. switch_parser(SwitchValue switch_value);
  4. -
  5. switch_parser(SwitchValue switch_value, OrParser or_parser);
  6. -
-
-
-

-switch_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  auto call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
  5. -
    template<typename Value, typename Parser2> 
    -  constexpr auto 
    -  operator()(Value value_, parser_interface< Parser2 > rhs) const noexcept;
    -

    Returns a parser_interface containing a switch_parser, with the case value_,rhs appended to its or_parser_.

    -
  6. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/symbol_parser.html b/doc/html/boost/parser/symbol_parser.html index ff1d4522..d66ca290 100644 --- a/doc/html/boost/parser/symbol_parser.html +++ b/doc/html/boost/parser/symbol_parser.html @@ -5,14 +5,14 @@ - + - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,40 +21,13 @@

Struct template symbol_parser

boost::parser::symbol_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<typename T> 
 struct symbol_parser {
-  // construct/copy/destruct
-  symbol_parser();
-  symbol_parser(symbol_parser const &);
-
-  // public member functions
-  template<typename Context> 
-    unspecified find(Context const &, std::string_view) const;
-  template<typename Context> 
-    void insert(Context const &, std::string_view, T &&) const;
-  template<typename Context> 
-    void erase(Context const &, std::string_view) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    T call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-           Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-  symbol_parser const & ref() const noexcept;
-  std::vector< std::pair< std::string_view, T > > const & 
-  initial_elements() const noexcept;
-
-  // public data members
-  std::vector< std::pair< std::string_view, T > > initial_elements_;
-  symbol_parser const  * copied_from_;
 };
-

Description

+

Description

Matches one of a set S of possible inputs, each of which is associated with an attribute value of type T, forming a symbol table. New elements and their associated attributes may be added to or removed from S dynamically, during parsing; any such changes are reverted at the end of parsing. The parse succeeds iff an element of S is matched.

See Also:

symbols

@@ -62,50 +35,6 @@

Synopsis

-
-

-symbol_parser - public - construct/copy/destruct

-
    -
  1. symbol_parser();
  2. -
  3. symbol_parser(symbol_parser const & other);
  4. -
-
-
-

-symbol_parser public member functions

-
    -
  1. -
    template<typename Context> 
    -  unspecified find(Context const & context, std::string_view str) const;
    -

    Uses UTF-8 string str to look up an attribute in the table during parsing, returning it as an optional reference. The lookup is done on the copy of the symbol table inside the parse context context.

    -
  2. -
  3. -
    template<typename Context> 
    -  void insert(Context const & context, std::string_view str, T && x) const;
    -

    Inserts an entry consisting of a UTF-8 string str to match, and an associtated attribute x, to the copy of the symbol table inside the parse context context.

    -
  4. -
  5. -
    template<typename Context> 
    -  void erase(Context const & context, std::string_view str) const;
    -

    Erases the entry whose UTF-8 match string is str from the copy of the symbol table inside the parse context context.

    -
  6. -
  7. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  T call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -         Sentinel last, Context const & context, SkipParser const & skip, 
    -         unspecified flags, bool & success) const;
  8. -
  9. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  10. -
  11. symbol_parser const & ref() const noexcept;
  12. -
  13. std::vector< std::pair< std::string_view, T > > const & 
    -initial_elements() const noexcept;
  14. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/symbols.html b/doc/html/boost/parser/symbols.html index 95907772..a0e87b7e 100644 --- a/doc/html/boost/parser/symbols.html +++ b/doc/html/boost/parser/symbols.html @@ -6,13 +6,13 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,57 +26,57 @@

Synopsis

template<typename T> struct symbols : public boost::parser::parser_interface< symbol_parser< T > > { // construct/copy/destruct - symbols(); - symbols(std::initializer_list< std::pair< std::string_view, T > >); + symbols(); + symbols(std::initializer_list< std::pair< std::string_view, T > >); - // public member functions - symbols & insert_for_next_parse(std::string_view, T); - symbols & operator()(std::string_view, T); + // public member functions + symbols & insert_for_next_parse(std::string_view, T); + symbols & operator()(std::string_view, T); template<typename Context> - unspecified find(Context const &, std::string_view) const; + unspecified find(Context const &, std::string_view) const; template<typename Context> - void insert(Context const &, std::string_view, T) const; + void insert(Context const &, std::string_view, T) const; template<typename Context> - void erase(Context const &, std::string_view) const; + void erase(Context const &, std::string_view) const; };
-

Description

+

Description

A symbols<T> represents the initial state of a symbol table parser that produces attributes of type T. The entries in the symbol table can be changed during parsing, but those mutations to not affect the symbols<T> object itself; all mutations happen to a copy of the symbol table in the parse context. For table entries that should be used during every parse, add entries via add() or operator(). For mid-parse mutations, use insert() and erase().

-

+

symbols public construct/copy/destruct

    -
  1. symbols();
  2. -
  3. symbols(std::initializer_list< std::pair< std::string_view, T > > il);
  4. +
  5. symbols();
  6. +
  7. symbols(std::initializer_list< std::pair< std::string_view, T > > il);
-

-symbols public member functions

+

+symbols public member functions

  1. -
    symbols & insert_for_next_parse(std::string_view str, T x);
    +
    symbols & insert_for_next_parse(std::string_view str, T x);

    Adds an entry consisting of a UTF-8 string str to match, and an associated attribute x, to *this. The entry is added for use in all subsequent top-level parses. Subsequent lookups during the current top-level parse will not match str.

  2. -
    symbols & operator()(std::string_view str, T x);
    +
    symbols & operator()(std::string_view str, T x);

    Equivalent to insert_for_next_parse(str, std::move(x)).

  3. template<typename Context> 
    -  unspecified find(Context const & context, std::string_view str) const;
    + unspecified find(Context const & context, std::string_view str) const;

    Uses UTF-8 string str to look up an attribute in the table during parsing, returning it as an optional reference. The lookup is done on the copy of the symbol table inside the parse context context, not *this.

  4. template<typename Context> 
    -  void insert(Context const & context, std::string_view str, T x) const;
    + void insert(Context const & context, std::string_view str, T x) const;

    Inserts an entry consisting of a UTF-8 string to match str, and an associtated attribute x, to the copy of the symbol table inside the parse context context.

  5. template<typename Context> 
    -  void erase(Context const & context, std::string_view str) const;
    + void erase(Context const & context, std::string_view str) const;

    Erases the entry whose UTF-8 match string is str from the copy of the symbol table inside the parse context context.

@@ -90,7 +90,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/trace.html b/doc/html/boost/parser/trace.html index b1d6a572..ed48230a 100644 --- a/doc/html/boost/parser/trace.html +++ b/doc/html/boost/parser/trace.html @@ -7,12 +7,12 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -27,7 +27,7 @@

Synopsis

enum trace { off, on };
-

Description

+

Description

An enumeration used for parameters to enable and disable trace in the *parse() functions.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/transform.html b/doc/html/boost/parser/transform.html new file mode 100644 index 00000000..06a15c5c --- /dev/null +++ b/doc/html/boost/parser/transform.html @@ -0,0 +1,43 @@ + + + +Function template transform + + + + + + + + + +
+PrevUpHomeNext +
+
+
+
+

Function template transform

+

boost::parser::transform

+
+

Synopsis

+
// In header: <boost/parser/parser.hpp>
+
+
+template<typename F> auto transform(F f);
+
+

Description

+

Returns a transform_directive that uses invocable F to do its work.

+
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost/parser/transform_directive.html b/doc/html/boost/parser/transform_directive.html new file mode 100644 index 00000000..96f51696 --- /dev/null +++ b/doc/html/boost/parser/transform_directive.html @@ -0,0 +1,57 @@ + + + +Struct template transform_directive + + + + + + + + + +
+PrevUpHomeNext +
+
+
+
+

Struct template transform_directive

+

boost::parser::transform_directive

+
+

Synopsis

+
// In header: <boost/parser/parser.hpp>
+
+template<typename F> 
+struct transform_directive {
+
+  // public member functions
+  template<typename Parser> 
+    constexpr auto operator[](parser_interface< Parser >) const noexcept;
+
+  // public data members
+  F f_;
+};
+
+

Description

+

A directive that transforms the attribute generated by a parser. operator[] returns a parser_interface<transform_parser<Parser, F>>.

+
+

+transform_directive public member functions

+
  1. template<typename Parser> 
    +  constexpr auto operator[](parser_interface< Parser > rhs) const noexcept;
+
+
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost/parser/transform_parser.html b/doc/html/boost/parser/transform_parser.html new file mode 100644 index 00000000..5b523a73 --- /dev/null +++ b/doc/html/boost/parser/transform_parser.html @@ -0,0 +1,44 @@ + + + +Struct template transform_parser + + + + + + + + + +
+PrevUpHomeNext +
+
+
+
+

Struct template transform_parser

+

boost::parser::transform_parser

+
+

Synopsis

+
// In header: <boost/parser/parser_fwd.hpp>
+
+template<typename Parser, typename F> 
+struct transform_parser {
+};
+
+

Description

+

Applies the given parser p of type Parser. The attribute produced by p is passed to the fiven invocable f of type F. f will only be invoked if p succeeds and sttributes are currently being generated. The parse succeeds iff p succeeds. The attribute produced is the the result of the call to f.

+
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost/parser/transform_replace.html b/doc/html/boost/parser/transform_replace.html index 9ca1ef14..4dcb1a75 100644 --- a/doc/html/boost/parser/transform_replace.html +++ b/doc/html/boost/parser/transform_replace.html @@ -25,7 +25,7 @@

Synopsis

unspecified transform_replace;
-

Description

+

Description

A range adaptor object ([range.adaptor.object]). Given subexpressions E and P, Q, R, and 'S', each of the expressions replace(E, P), replace(E, P, Q). replace(E, P, Q, R), and replace(E, P, Q, R, S) are expression-equivalent to replace_view(E, P), replace_view(E, P, Q), replace_view(E, P, Q, R), replace_view(E, diff --git a/doc/html/boost/parser/transform_replace_view.html b/doc/html/boost/parser/transform_replace_view.html index 43b85cde..2ec35ad1 100644 --- a/doc/html/boost/parser/transform_replace_view.html +++ b/doc/html/boost/parser/transform_replace_view.html @@ -23,9 +23,9 @@

Struct template transform_replace_viewSynopsis

// In header: <boost/parser/transform_replace.hpp>
 
-template<typename V, typename F, typename Parser, typename GlobalState, 
-         typename ErrorHandler, typename SkipParser, 
-         typename Enable = std::enable_if_t<detail::transform_replacement_for<F, V, Parser>> > 
+template<std::ranges::viewable_range V, std::move_constructible F, 
+         typename Parser, typename GlobalState, typename ErrorHandler, 
+         typename SkipParser> 
 struct transform_replace_view {
   // member classes/structs/unions
   template<bool Const> 
@@ -38,65 +38,66 @@ 

Synopsis

typedef unspecified base_type; // construct/copy/destruct - iterator() = default; - iterator(unspecified); + iterator() = default; + iterator(unspecified); - // public member functions - constexpr iterator & operator++(); - constexpr reference_type operator*() const; + // public member functions + constexpr iterator & operator++(); + constexpr reference_type operator*() const; }; template<bool Const> struct sentinel { }; // construct/copy/destruct - transform_replace_view() = default; - transform_replace_view(V, + transform_replace_view() = default; + transform_replace_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, parser_interface< SkipParser > const &, F, trace = trace::off); - transform_replace_view(V, + transform_replace_view(V, parser_interface< Parser, GlobalState, ErrorHandler > const &, F, trace = trace::off); - // public member functions - constexpr V base() const; - constexpr V base(); - constexpr F const & f() const; - constexpr auto begin(); - constexpr auto end(); - constexpr auto begin() const; - constexpr auto end() const; + // public member functions + constexpr V base() const; + constexpr V base(); + constexpr F const & f() const; + constexpr auto begin(); + constexpr auto end(); + constexpr auto begin() const; + constexpr auto end() const; };
-

Description

-

Produces a range of subranges of a given range base. Each subrange is either a subrange of base that does not match the given parser parser, or is f(*boost::parser::parse(match, parser)), where f is the given invocable and match is the matching subrange.

+

Description

+

Produces a range of subranges of a given range base. Each subrange is either a subrange of base that does not match the given parser parser, or is f(*boost::parser::parse(match, parser)), where f is the given invocable and match is the matching subrange.

+

In addition to the template parameter constraints, F must be invocable with the attribute type of Parser; V and the range type produced by F, "`Rf`" must be ranges of char, or must have the same UTF format; and V and Rf must meet the same compatibility requirements as described in std::ranges::join_view.

-

+

transform_replace_view public construct/copy/destruct

    -
  1. transform_replace_view() = default;
  2. -
  3. transform_replace_view(V base, 
    +
  4. transform_replace_view() = default;
  5. +
  6. transform_replace_view(V base, 
                            parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                            parser_interface< SkipParser > const & skip, F f, 
                            trace trace_mode = trace::off);
  7. -
  8. transform_replace_view(V base, 
    +
  9. transform_replace_view(V base, 
                            parser_interface< Parser, GlobalState, ErrorHandler > const & parser, 
                            F f, trace trace_mode = trace::off);
-

-transform_replace_view public member functions

+

+transform_replace_view public member functions

    -
  1. constexpr V base() const;
  2. -
  3. constexpr V base();
  4. -
  5. constexpr F const & f() const;
  6. -
  7. constexpr auto begin();
  8. -
  9. constexpr auto end();
  10. -
  11. constexpr auto begin() const;
  12. -
  13. constexpr auto end() const;
  14. +
  15. constexpr V base() const;
  16. +
  17. constexpr V base();
  18. +
  19. constexpr F const & f() const;
  20. +
  21. constexpr auto begin();
  22. +
  23. constexpr auto end();
  24. +
  25. constexpr auto begin() const;
  26. +
  27. constexpr auto end() const;
diff --git a/doc/html/boost/parser/transform_replace_view/iterator.html b/doc/html/boost/parser/transform_replace_view/iterator.html index 7ae03fd9..3717f1d2 100644 --- a/doc/html/boost/parser/transform_replace_view/iterator.html +++ b/doc/html/boost/parser/transform_replace_view/iterator.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -34,31 +34,31 @@

Synopsis

typedef unspecified base_type; // construct/copy/destruct - iterator() = default; - iterator(unspecified); + iterator() = default; + iterator(unspecified); - // public member functions - constexpr iterator & operator++(); - constexpr reference_type operator*() const; + // public member functions + constexpr iterator & operator++(); + constexpr reference_type operator*() const; };
-

Description

+

Description

-

+

iterator public construct/copy/destruct

    -
  1. iterator() = default;
  2. -
  3. iterator(unspecified parent);
  4. +
  5. iterator() = default;
  6. +
  7. iterator(unspecified parent);
-

-iterator public member functions

+

+iterator public member functions

    -
  1. constexpr iterator & operator++();
  2. -
  3. constexpr reference_type operator*() const;
  4. +
  5. constexpr iterator & operator++();
  6. +
  7. constexpr reference_type operator*() const;
@@ -70,7 +70,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/transform_replace_view/sentinel.html b/doc/html/boost/parser/transform_replace_view/sentinel.html index 9c512305..c6329eac 100644 --- a/doc/html/boost/parser/transform_replace_view/sentinel.html +++ b/doc/html/boost/parser/transform_replace_view/sentinel.html @@ -5,14 +5,14 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -35,7 +35,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/tuple.html b/doc/html/boost/parser/tuple.html index a134a1fa..253db982 100644 --- a/doc/html/boost/parser/tuple.html +++ b/doc/html/boost/parser/tuple.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,7 +26,7 @@

Synopsis

typedef hana::tuple< Args... > tuple;
-

Description

+

Description

The tuple template alias used within Boost.Parser. This will be boost::hana::tuple unless BOOST_PARSER_DISABLE_HANA_TUPLE is defined, in which case it is std::tuple.

@@ -37,7 +37,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/uint_.html b/doc/html/boost/parser/uint_.html index a7c0d151..46dd1c63 100644 --- a/doc/html/boost/parser/uint_.html +++ b/doc/html/boost/parser/uint_.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< uint_parser< unsigned int > > uint_;
-

Description

+

Description

The unsigned int parser. Produces an unsigned int attribute. To parse a particular value x, use uint_(x).

diff --git a/doc/html/boost/parser/uint_parser.html b/doc/html/boost/parser/uint_parser.html index 976c9af4..e1969741 100644 --- a/doc/html/boost/parser/uint_parser.html +++ b/doc/html/boost/parser/uint_parser.html @@ -5,14 +5,14 @@ - - + +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,65 +21,15 @@

Struct template uint_parser

boost::parser::uint_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
-template<typename T, int Radix, int MinDigits, int MaxDigits, 
-         typename Expected> 
+template<typename T, int Radix = 10, int MinDigits = 1, int MaxDigits = -1, 
+         typename Expected = detail::nope> 
 struct uint_parser {
-  // construct/copy/destruct
-  uint_parser();
-  explicit uint_parser(Expected);
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    T call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-           Context const &, SkipParser const &, unspecified, bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
-  template<typename Expected2> 
-    constexpr auto operator()(Expected2) const noexcept;
-
-  // public data members
-  Expected expected_;
 };
-

Description

+

Description

Matches an unsigned number of radix Radix, of at least MinDigits and at most MaxDigits, producing an attribute of type T. Fails on any other input. The parse will also fail if Expected is anything but detail::nope (which it is by default), and the produced attribute is not equal to expected_. Radix must be in [2, 36].

-
-

-uint_parser - public - construct/copy/destruct

-
    -
  1. uint_parser();
  2. -
  3. explicit uint_parser(Expected expected);
  4. -
-
-
-

-uint_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  T call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -         Sentinel last, Context const & context, SkipParser const & skip, 
    -         unspecified flags, bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
  5. -
    template<typename Expected2> 
    -  constexpr auto operator()(Expected2 expected) const noexcept;
    -

    Returns a parser_interface containing a uint_parser that matches the exact value expected.

    -
  6. -
-

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/ulong_.html b/doc/html/boost/parser/ulong_.html index 6a4bc0cd..91a586c0 100644 --- a/doc/html/boost/parser/ulong_.html +++ b/doc/html/boost/parser/ulong_.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< uint_parser< unsigned long > > ulong_;
-

Description

+

Description

The unsigned long parser. Produces an unsigned long attribute. To parse a particular value x, use ulong_(x).

diff --git a/doc/html/boost/parser/ulong_long.html b/doc/html/boost/parser/ulong_long.html index 5392a583..c1b7d535 100644 --- a/doc/html/boost/parser/ulong_long.html +++ b/doc/html/boost/parser/ulong_long.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< uint_parser< unsigned long long > > ulong_long;
-

Description

+

Description

The unsigned long long parser. Produces an unsigned long long attribute. To parse a particular value x, use ulong_long(x).

diff --git a/doc/html/boost/parser/upper.html b/doc/html/boost/parser/upper.html index 30436d1a..efe32e43 100644 --- a/doc/html/boost/parser/upper.html +++ b/doc/html/boost/parser/upper.html @@ -25,7 +25,7 @@

Synopsis

unspecified upper;
-

Description

+

Description

The lower case character parser. Matches the full set of Unicode lower case code points (class "Lu").

diff --git a/doc/html/boost/parser/ushort_.html b/doc/html/boost/parser/ushort_.html index f114f89f..6dc5f9e7 100644 --- a/doc/html/boost/parser/ushort_.html +++ b/doc/html/boost/parser/ushort_.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< uint_parser< unsigned short > > ushort_;
-

Description

+

Description

The unsigned short parser. Produces an unsigned short attribute. To parse a particular value x, use ushort_(x).

diff --git a/doc/html/boost/parser/utf16_view.html b/doc/html/boost/parser/utf16_view.html index 29c52adb..4308a126 100644 --- a/doc/html/boost/parser/utf16_view.html +++ b/doc/html/boost/parser/utf16_view.html @@ -27,20 +27,29 @@

Synopsis

class utf16_view { public: // construct/copy/destruct - utf16_view() = default; - utf16_view(V); + utf16_view() = default; + utf16_view(V); };
-

Description

-

A view that produces UTF-16 from an given sequence of UTF.

+

Description

+

A view that produces UTF-16 from an given sequence of UTF.

+

+

-

+

Template Parameters

+
  1. +
    unspecified V
    +

    Constrained by std::ranges::view<V>. Additionally, the value type of V must be char, wchar_t, char8_t, char16_t, or char32_t.

    +
+
+
+

utf16_view public construct/copy/destruct

    -
  1. utf16_view() = default;
  2. -
  3. utf16_view(V base);
  4. +
  5. utf16_view() = default;
  6. +
  7. utf16_view(V base);
diff --git a/doc/html/boost/parser/utf32_view.html b/doc/html/boost/parser/utf32_view.html index 2d654ae1..8f93bf16 100644 --- a/doc/html/boost/parser/utf32_view.html +++ b/doc/html/boost/parser/utf32_view.html @@ -27,20 +27,29 @@

Synopsis

class utf32_view { public: // construct/copy/destruct - utf32_view() = default; - utf32_view(V); + utf32_view() = default; + utf32_view(V); };
-

Description

-

A view that produces UTF-32 from an given sequence of UTF.

+

Description

+

A view that produces UTF-32 from an given sequence of UTF.

+

+

-

+

Template Parameters

+
  1. +
    unspecified V
    +

    Constrained by std::ranges::view<V>. Additionally, the value type of V must be char, wchar_t, char8_t, char16_t, or char32_t.

    +
+
+
+

utf32_view public construct/copy/destruct

    -
  1. utf32_view() = default;
  2. -
  3. utf32_view(V base);
  4. +
  5. utf32_view() = default;
  6. +
  7. utf32_view(V base);
diff --git a/doc/html/boost/parser/utf8_view.html b/doc/html/boost/parser/utf8_view.html index fa8b656f..81990991 100644 --- a/doc/html/boost/parser/utf8_view.html +++ b/doc/html/boost/parser/utf8_view.html @@ -27,20 +27,29 @@

Synopsis

class utf8_view { public: // construct/copy/destruct - utf8_view() = default; - utf8_view(V); + utf8_view() = default; + utf8_view(V); };
-

Description

-

A view that produces UTF-8 from an given sequence of UTF.

+

Description

+

A view that produces UTF-8 from an given sequence of UTF.

+

+

-

+

Template Parameters

+
  1. +
    unspecified V
    +

    Constrained by std::ranges::view<V>. Additionally, the value type of V must be char, wchar_t, char8_t, char16_t, or char32_t.

    +
+
+
+

utf8_view public construct/copy/destruct

    -
  1. utf8_view() = default;
  2. -
  3. utf8_view(V base);
  4. +
  5. utf8_view() = default;
  6. +
  7. utf8_view(V base);
diff --git a/doc/html/boost/parser/with_error_handler.html b/doc/html/boost/parser/with_error_handler.html index b2637e13..55cd49de 100644 --- a/doc/html/boost/parser/with_error_handler.html +++ b/doc/html/boost/parser/with_error_handler.html @@ -7,12 +7,12 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -28,7 +28,7 @@

Synopsis

auto with_error_handler(parser_interface< Parser, GlobalState, default_error_handler > const & parser, ErrorHandler & error_handler);
-

Description

+

Description

Returns a parser_interface with the same parser and globals, with error_handler added. The resut of passing any non-top-level parser for the parser argument is undefined.

@@ -39,7 +39,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/with_globals.html b/doc/html/boost/parser/with_globals.html index b5928d34..6b01eaf8 100644 --- a/doc/html/boost/parser/with_globals.html +++ b/doc/html/boost/parser/with_globals.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -27,7 +27,7 @@

Synopsis

template<typename Parser, typename GlobalState, typename ErrorHandler> auto with_globals(unspecified parser, GlobalState & globals);
-

Description

+

Description

Returns a parser_interface with the same parser and error handler, with globals added. The resut of passing any non-top-level parser for the parser argument is undefined.

@@ -38,7 +38,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/write_formatted_e_idm22706.html b/doc/html/boost/parser/write_formatted_e_idm30065.html similarity index 93% rename from doc/html/boost/parser/write_formatted_e_idm22706.html rename to doc/html/boost/parser/write_formatted_e_idm30065.html index 3dd6d4b1..a528a1b3 100644 --- a/doc/html/boost/parser/write_formatted_e_idm22706.html +++ b/doc/html/boost/parser/write_formatted_e_idm30065.html @@ -6,16 +6,16 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template write_formatted_expectation_failure_error_message

boost::parser::write_formatted_expectation_failure_error_message

@@ -34,7 +34,7 @@

Synopsis

int64_t preferred_max_line_length = 80, int64_t max_after_caret = 40);
-

Description

+

Description

Writes a formatted parse-expectation failure (meaning prefixed with the file name, line, and column number) to os.

@@ -45,7 +45,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/write_formatted_e_idm22991.html b/doc/html/boost/parser/write_formatted_e_idm30350.html similarity index 93% rename from doc/html/boost/parser/write_formatted_e_idm22991.html rename to doc/html/boost/parser/write_formatted_e_idm30350.html index 60b66d84..0545cf6f 100644 --- a/doc/html/boost/parser/write_formatted_e_idm22991.html +++ b/doc/html/boost/parser/write_formatted_e_idm30350.html @@ -6,16 +6,16 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template write_formatted_expectation_failure_error_message

boost::parser::write_formatted_expectation_failure_error_message

@@ -34,7 +34,7 @@

Synopsis

int64_t preferred_max_line_length = 80, int64_t max_after_caret = 40);
-

Description

+

Description

Writes a formatted parse-expectation failure (meaning prefixed with the file name, line, and column number) to os. This overload is Windows-only.

@@ -45,7 +45,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/write_formatted_m_idm22680.html b/doc/html/boost/parser/write_formatted_m_idm30039.html similarity index 93% rename from doc/html/boost/parser/write_formatted_m_idm22680.html rename to doc/html/boost/parser/write_formatted_m_idm30039.html index 233ae886..9c375129 100644 --- a/doc/html/boost/parser/write_formatted_m_idm22680.html +++ b/doc/html/boost/parser/write_formatted_m_idm30039.html @@ -7,15 +7,15 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template write_formatted_message

boost::parser::write_formatted_message

@@ -32,7 +32,7 @@

Synopsis

int64_t preferred_max_line_length = 80, int64_t max_after_caret = 40);
-

Description

+

Description

Writes a formatted message (meaning prefixed with the file name, line, and column number) to os.

@@ -43,7 +43,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/write_formatted_m_idm22965.html b/doc/html/boost/parser/write_formatted_m_idm30324.html similarity index 93% rename from doc/html/boost/parser/write_formatted_m_idm22965.html rename to doc/html/boost/parser/write_formatted_m_idm30324.html index b6951f42..ff001340 100644 --- a/doc/html/boost/parser/write_formatted_m_idm22965.html +++ b/doc/html/boost/parser/write_formatted_m_idm30324.html @@ -7,15 +7,15 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
-
+

Function template write_formatted_message

boost::parser::write_formatted_message

@@ -32,7 +32,7 @@

Synopsis

int64_t preferred_max_line_length = 80, int64_t max_after_caret = 40);
-

Description

+

Description

Writes a formatted message (meaning prefixed with the file name, line, and column number) to os. This overload is Windows-only.

@@ -43,7 +43,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/ws.html b/doc/html/boost/parser/ws.html index c82e1025..4fd38bc7 100644 --- a/doc/html/boost/parser/ws.html +++ b/doc/html/boost/parser/ws.html @@ -25,7 +25,7 @@

Synopsis

constexpr parser_interface< ws_parser< false, false > > ws;
-

Description

+

Description

The whitespace parser. This matches "\r\n", or any one of the Unicode code points with the White_Space property, as defined in https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt. Produces no attribute.

diff --git a/doc/html/boost/parser/ws_parser.html b/doc/html/boost/parser/ws_parser.html index 9a434884..98b1ffe1 100644 --- a/doc/html/boost/parser/ws_parser.html +++ b/doc/html/boost/parser/ws_parser.html @@ -5,14 +5,14 @@ - + - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -21,52 +21,14 @@

Struct template ws_parser

boost::parser::ws_parser

Synopsis

-
// In header: <boost/parser/parser.hpp>
+
// In header: <boost/parser/parser_fwd.hpp>
 
 template<bool NewlinesOnly, bool NoNewlines> 
 struct ws_parser {
-  // construct/copy/destruct
-  ws_parser();
-
-  // public member functions
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser> 
-    unspecified call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-                     Context const &, SkipParser const &, unspecified, 
-                     bool &) const;
-  template<bool UseCallbacks, typename Iter, typename Sentinel, 
-           typename Context, typename SkipParser, typename Attribute> 
-    void call(std::bool_constant< UseCallbacks >, Iter &, Sentinel, 
-              Context const &, SkipParser const &, unspecified, bool &, 
-              Attribute &) const;
 };
-

Description

-

Maches an end-of-line (NewlinesOnly == true), whitespace (NewlinesOnly == false), or (NoNewlines == true) blank (whitespace but not newline) code point, based on the Unicode definitions of each (also matches the two code points "\r\n"). Produces no attribute.

-
-

-ws_parser - public - construct/copy/destruct

-
  1. ws_parser();
-
-
-

-ws_parser public member functions

-
    -
  1. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser> 
    -  unspecified call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -                   Sentinel last, Context const & context, 
    -                   SkipParser const & skip, unspecified flags, 
    -                   bool & success) const;
  2. -
  3. template<bool UseCallbacks, typename Iter, typename Sentinel, 
    -         typename Context, typename SkipParser, typename Attribute> 
    -  void call(std::bool_constant< UseCallbacks > use_cbs, Iter & first, 
    -            Sentinel last, Context const & context, SkipParser const & skip, 
    -            unspecified flags, bool & success, Attribute & retval) const;
  4. -
-
+

Description

+

Matches an end-of-line (NewlinesOnly == true), whitespace (NewlinesOnly == false), or (NoNewlines == true) blank (whitespace but not newline) code point, based on the Unicode definitions of each (also matches the two code points "\r\n"). Produces no attribute.


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost/parser/zero_plus_parser.html b/doc/html/boost/parser/zero_plus_parser.html index cd2cd296..953d76e5 100644 --- a/doc/html/boost/parser/zero_plus_parser.html +++ b/doc/html/boost/parser/zero_plus_parser.html @@ -6,13 +6,13 @@ - +
-PrevUpHomeNext +PrevUpHomeNext
@@ -26,19 +26,17 @@

Synopsis

template<typename Parser> struct zero_plus_parser : public boost::parser::repeat_parser< Parser > { // construct/copy/destruct - zero_plus_parser(Parser); + zero_plus_parser(Parser); };
-

Description

-

Repeats the application of another parser p of type Parser, [0, Inf) times. The parse always succeeds. The attribute produced is a sequence of the type of attribute produced by Parser.

-

A simplified repeat_parser that applies parser zero or more times.
-

+

Description

+

Repeats the application of another parser p of type Parser, [0, Inf) times. The parse always succeeds. The attribute produced is a sequence of the type of attribute produced by Parser.

-

+

zero_plus_parser public construct/copy/destruct

-
  1. zero_plus_parser(Parser parser);
+
  1. zero_plus_parser(Parser parser);
@@ -49,7 +47,7 @@

Synopsis


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_parser__proposed_/cheat_sheet.html b/doc/html/boost_parser__proposed_/cheat_sheet.html new file mode 100644 index 00000000..6c0d65d0 --- /dev/null +++ b/doc/html/boost_parser__proposed_/cheat_sheet.html @@ -0,0 +1,3368 @@ + + + +Cheat Sheet + + + + + + + + + +
+PrevUpHomeNext +
+
+ +

+ Here are all the tables containing the various Boost.Parser parsers, examples, + etc., all in one place. These are repeated elsewhere in different sections + of the tutorial. +

+

+ + The + parsers +

+

+ This table lists all the Boost.Parser parsers. For the callable parsers, a + separate entry exists for each possible arity of arguments. For a parser p, if there is no entry for p without arguments, p + is a function, and cannot itself be used as a parser; it must be called. In + the table below: +

+
    +
  • + each entry is a global object usable directly in your parsers, unless otherwise + noted; +
  • +
  • + "code point" is used to refer to the elements of the input range, + which assumes that the parse is being done in the Unicode-aware code path + (if the parse is being done in the non-Unicode code path, read "code + point" as "char"); +
  • +
  • + RESOLVE() + is a notional macro that expands to the resolution of parse argument or + evaluation of a parse predicate (see The + Parsers And Their Uses); +
  • +
  • + "RESOLVE(pred) == true" + is a shorthand notation for "RESOLVE(pred) is contextually convertible to bool and true"; + likewise for false; +
  • +
  • + c is a character of type + char, char8_t, + or char32_t; +
  • +
  • + str is a string literal + of type char const[], char8_t + const [], + or char32_t const + []; +
  • +
  • + pred is a parse predicate; +
  • +
  • + arg0, arg1, + arg2, ... are parse arguments; +
  • +
  • + a is a semantic action; +
  • +
  • + r is an object whose type + models parsable_range_like; + and +
  • +
  • + p, p1, + p2, ... are parsers. +
  • +
  • + escapes is a symbols<T> object, where T is char + or char32_t. +
  • +
+
+ + + + + +
[Note]Note
+

+ The definition of parsable_range_like + is: +

+

+

+
template<typename T>
+concept parsable_range = std::ranges::forward_range<T> &&
+    code_unit<std::ranges::range_value_t<T>>;
+
+template<typename T>
+concept parsable_pointer = std::is_pointer_v<std::remove_cvref_t<T>> &&
+    code_unit<std::remove_pointer_t<std::remove_cvref_t<T>>>;
+
+template<typename T>
+concept parsable_range_like = parsable_range<T> || parsable_pointer<T>;
+
+

+

+

+ It is intended to be a range-like thing; a null-terminated sequence of characters + is considered range-like, given that a pointer T + * to a null-terminated string is isomorphic + with subrange<T *, null_sentinel_t>. +

+
+
+ + + + + +
[Note]Note

+ Some of the parsers in this table consume no input. All parsers consume the + input they match unless otherwise stated in the table below. +

+
+

Table 1.1. Parsers and Their Semantics

+
++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Parser +

+
+

+ Semantics +

+
+

+ Attribute Type +

+
+

+ Notes +

+
+

+ eps +

+
+

+ Matches epsilon, the empty string. Always matches, + and consumes no input. +

+
+

+ None. +

+
+

+ Matching eps + an unlimited number of times creates an infinite loop, which is undefined + behavior in C++. Boost.Parser will assert in debug mode when it encounters + *eps, +eps, etc (this + applies to unconditional eps only). +

+
+

+ eps(pred) +

+
+

+ Fails to match the input if RESOLVE(pred) == false. Otherwise, the semantics are + those of eps. +

+
+

+ None. +

+
+
+

+ ws +

+
+

+ Matches a single whitespace code point (see note), according to the + Unicode White_Space property. +

+
+

+ None. +

+
+

+ For more info, see the Unicode + properties. ws may consume one + code point or two. It only consumes two code points when it matches + "\r\n". +

+
+

+ eol +

+
+

+ Matches a single newline (see note), following the "hard" + line breaks in the Unicode line breaking algorithm. +

+
+

+ None. +

+
+

+ For more info, see the Unicode + Line Breaking Algorithm. eol may consume one + code point or two. It only consumes two code points when it matches + "\r\n". +

+
+

+ eoi +

+
+

+ Matches only at the end of input, and consumes no input. +

+
+

+ None. +

+
+
+

+ attr(arg0) +

+
+

+ Always matches, and consumes no input. Generates the attribute RESOLVE(arg0). +

+
+

+ decltype(RESOLVE(arg0)). +

+
+

+ An important use case for attribute is + to provide a default attribute value as a trailing alternative. For + instance, an optional comma-delmited + list is: int_ % + ',' | + attr(std::vector<int>). + Without the "| attr(...)", + at least one int_ + match would be required. +

+
+

+ char_ +

+
+

+ Matches any single code point. +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See Attribute + Generation. +

+
+
+

+ char_(arg0) +

+
+

+ Matches exactly the code point RESOLVE(arg0). +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See Attribute + Generation. +

+
+
+

+ char_(arg0, arg1) +

+
+

+ Matches the next code point n + in the input, if RESOLVE(arg0) <= + n && + n <= + RESOLVE(arg1). +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See Attribute + Generation. +

+
+
+

+ char_(r) +

+
+

+ Matches the next code point n + in the input, if n + is one of the code points in r. +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See Attribute + Generation. +

+
+

+ r is taken to be + in a UTF encoding. The exact UTF used depends on r's + element type. If you do not pass UTF encoded ranges for r, the behavior of char_ + is undefined. Note that ASCII is a subset of UTF-8, so ASCII is fine. + EBCDIC is not. r + is not copied; a reference to it is taken. The lifetime of char_(r) must be within the lifetime of + r. This overload + of char_ + does not take parse arguments. +

+
+

+ cp +

+
+

+ Matches a single code point. +

+
+

+ char32_t +

+
+

+ Similar to char_, + but with a fixed char32_t + attribute type; cp has all the same + call operator overloads as char_, though they + are not repeated here, for brevity. +

+
+

+ cu +

+
+

+ Matches a single code point. +

+
+

+ char +

+
+

+ Similar to char_, + but with a fixed char + attribute type; cu has all the same + call operator overloads as char_, though they + are not repeated here, for brevity. Even though the name "cu" suggests that this parser + match at the code unit level, it does not. The name refers to the + attribute type generated, much like the names int_ versus uint_. +

+
+

+ blank +

+
+

+ Equivalent to ws - + eol. +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See the entry for char_. +

+
+
+

+ control +

+
+

+ Matches a single control-character code point. +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See the entry for char_. +

+
+
+

+ digit +

+
+

+ Matches a single decimal digit code point. +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See the entry for char_. +

+
+
+

+ punct +

+
+

+ Matches a single punctuation code point. +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See the entry for char_. +

+
+
+

+ hex_digit +

+
+

+ Matches a single hexidecimal digit code point. +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See the entry for char_. +

+
+
+

+ lower +

+
+

+ Matches a single lower-case code point. +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See the entry for char_. +

+
+
+

+ upper +

+
+

+ Matches a single upper-case code point. +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing. See the entry for char_. +

+
+
+

+ lit(c) +

+
+

+ Matches exactly the given code point c. +

+
+

+ None. +

+
+

+ lit() does not + take parse arguments. +

+
+

+ c_l +

+
+

+ Matches exactly the given code point c. +

+
+

+ None. +

+
+

+ This is a UDL + that represents lit(c), + for example 'F'_l. +

+
+

+ lit(r) +

+
+

+ Matches exactly the given string r. +

+
+

+ None. +

+
+

+ lit() does not + take parse arguments. +

+
+

+ str_l +

+
+

+ Matches exactly the given string str. +

+
+

+ None. +

+
+

+ This is a UDL + that represents lit(s), + for example "a string"_l. +

+
+

+ string(r) +

+
+

+ Matches exactly r, + and generates the match as an attribute. +

+
+

+ std::string +

+
+

+ string() does not + take parse arguments. +

+
+

+ str_p +

+
+

+ Matches exactly str, + and generates the match as an attribute. +

+
+

+ std::string +

+
+

+ This is a UDL + that represents string(s), + for example "a string"_p. +

+
+

+ bool_ +

+
+

+ Matches "true" + or "false". +

+
+

+ bool +

+
+
+

+ bin +

+
+

+ Matches a binary unsigned integral value. +

+
+

+ unsigned int +

+
+

+ For example, bin + would match "101", + and generate an attribute of 5u. +

+
+

+ bin(arg0) +

+
+

+ Matches exactly the binary unsigned integral value RESOLVE(arg0). +

+
+

+ unsigned int +

+
+
+

+ oct +

+
+

+ Matches an octal unsigned integral value. +

+
+

+ unsigned int +

+
+

+ For example, oct + would match "31", + and generate an attribute of 25u. +

+
+

+ oct(arg0) +

+
+

+ Matches exactly the octal unsigned integral value RESOLVE(arg0). +

+
+

+ unsigned int +

+
+
+

+ hex +

+
+

+ Matches a hexadecimal unsigned integral value. +

+
+

+ unsigned int +

+
+

+ For example, hex + would match "ff", + and generate an attribute of 255u. +

+
+

+ hex(arg0) +

+
+

+ Matches exactly the hexadecimal unsigned integral value RESOLVE(arg0). +

+
+

+ unsigned int +

+
+
+

+ ushort_ +

+
+

+ Matches an unsigned integral value. +

+
+

+ unsigned short +

+
+
+

+ ushort_(arg0) +

+
+

+ Matches exactly the unsigned integral value RESOLVE(arg0). +

+
+

+ unsigned short +

+
+
+

+ uint_ +

+
+

+ Matches an unsigned integral value. +

+
+

+ unsigned int +

+
+
+

+ uint_(arg0) +

+
+

+ Matches exactly the unsigned integral value RESOLVE(arg0). +

+
+

+ unsigned int +

+
+
+

+ ulong_ +

+
+

+ Matches an unsigned integral value. +

+
+

+ unsigned long +

+
+
+

+ ulong_(arg0) +

+
+

+ Matches exactly the unsigned integral value RESOLVE(arg0). +

+
+

+ unsigned long +

+
+
+

+ ulong_long +

+
+

+ Matches an unsigned integral value. +

+
+

+ unsigned long + long +

+
+
+

+ ulong_long(arg0) +

+
+

+ Matches exactly the unsigned integral value RESOLVE(arg0). +

+
+

+ unsigned long + long +

+
+
+

+ short_ +

+
+

+ Matches a signed integral value. +

+
+

+ short +

+
+
+

+ short_(arg0) +

+
+

+ Matches exactly the signed integral value RESOLVE(arg0). +

+
+

+ short +

+
+
+

+ int_ +

+
+

+ Matches a signed integral value. +

+
+

+ int +

+
+
+

+ int_(arg0) +

+
+

+ Matches exactly the signed integral value RESOLVE(arg0). +

+
+

+ int +

+
+
+

+ long_ +

+
+

+ Matches a signed integral value. +

+
+

+ long +

+
+
+

+ long_(arg0) +

+
+

+ Matches exactly the signed integral value RESOLVE(arg0). +

+
+

+ long +

+
+
+

+ long_long +

+
+

+ Matches a signed integral value. +

+
+

+ long long +

+
+
+

+ long_long(arg0) +

+
+

+ Matches exactly the signed integral value RESOLVE(arg0). +

+
+

+ long long +

+
+
+

+ float_ +

+
+

+ Matches a floating-point number. float_ uses parsing + implementation details from Boost.Spirit. + The specifics of what formats are accepted can be found in their + real + number parsers. Note that only the default RealPolicies is supported by float_. +

+
+

+ float +

+
+
+

+ double_ +

+
+

+ Matches a floating-point number. double_ uses parsing + implementation details from Boost.Spirit. + The specifics of what formats are accepted can be found in their + real + number parsers. Note that only the default RealPolicies is supported by double_. +

+
+

+ double +

+
+
+

+ repeat(arg0)[p] +

+
+

+ Matches iff p matches + exactly RESOLVE(arg0) times. +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ The special value Inf may be used; it + indicates unlimited repetition. decltype(RESOLVE(arg0)) must be implicitly convertible + to int64_t. Matching + eps + an unlimited number of times creates an infinite loop, which is undefined + behavior in C++. Boost.Parser will assert in debug mode when it encounters + repeat(Inf)[eps] (this applies to unconditional + eps + only). +

+
+

+ repeat(arg0, arg1)[p] +

+
+

+ Matches iff p matches + between RESOLVE(arg0) and RESOLVE(arg1) times, inclusively. +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ The special value Inf may be used for + the upper bound; it indicates unlimited repetition. decltype(RESOLVE(arg0)) and decltype(RESOLVE(arg1)) each must be implicitly convertible + to int64_t. Matching + eps + an unlimited number of times creates an infinite loop, which is undefined + behavior in C++. Boost.Parser will assert in debug mode when it encounters + repeat(n, Inf)[eps] (this applies to unconditional + eps + only). +

+
+

+ if_(pred)[p] +

+
+

+ Equivalent to eps(pred) + >> p. +

+
+

+ std::optional<ATTR(p)> +

+
+

+ It is an error to write if_(pred). + That is, it is an error to omit the conditionally matched parser + p. +

+
+

+ switch_(arg0)(arg1, p1)(arg2, p2) ... +

+
+

+ Equivalent to p1 + when RESOLVE(arg0) == RESOLVE(arg1), p2 + when RESOLVE(arg0) == RESOLVE(arg2), etc. If there is such no argN, the behavior of switch_() is undefined. +

+
+

+ std::variant<ATTR(p1), ATTR(p2), ...> +

+
+

+ It is an error to write switch_(arg0). + That is, it is an error to omit the conditionally matched parsers + p1, p2, .... +

+
+

+ symbols<T> +

+
+

+ symbols + is an associative container of key, value pairs. Each key is a std::string and each value has type + T. In the Unicode + parsing path, the strings are considered to be UTF-8 encoded; in + the non-Unicode path, no encoding is assumed. symbols Matches the + longest prefix pre + of the input that is equal to one of the keys k. + If the length len + of pre is zero, and + there is no zero-length key, it does not match the input. If len is positive, the generated + attribute is the value associated with k. +

+
+

+ T +

+
+

+ Unlike the other entries in this table, symbols is a type, + not an object. +

+
+

+ quoted_string +

+
+

+ Matches '"', followed + by zero or more characters, followed by '"'. +

+
+

+ std::string +

+
+

+ The result does not include the quotes. A quote within the string + can be written by escaping it with a backslash. A backslash within + the string can be written by writing two consecutive backslashes. + Any other use of a backslash will fail the parse. Skipping is disabled + while parsing the entire string, as if using lexeme[]. +

+
+

+ quoted_string(c) +

+
+

+ Matches c, followed + by zero or more characters, followed by c. +

+
+

+ std::string +

+
+

+ The result does not include the c + quotes. A c within + the string can be written by escaping it with a backslash. A backslash + within the string can be written by writing two consecutive backslashes. + Any other use of a backslash will fail the parse. Skipping is disabled + while parsing the entire string, as if using lexeme[]. +

+
+

+ quoted_string(r) +

+
+

+ Matches some character Q + in r, followed by + zero or more characters, followed by Q. +

+
+

+ std::string +

+
+

+ The result does not include the Q + quotes. A Q within + the string can be written by escaping it with a backslash. A backslash + within the string can be written by writing two consecutive backslashes. + Any other use of a backslash will fail the parse. Skipping is disabled + while parsing the entire string, as if using lexeme[]. +

+
+

+ quoted_string(c, symbols) +

+
+

+ Matches c, followed + by zero or more characters, followed by c. +

+
+

+ std::string +

+
+

+ The result does not include the c + quotes. A c within + the string can be written by escaping it with a backslash. A backslash + within the string can be written by writing two consecutive backslashes. + A backslash followed by a successful match using symbols + will be interpreted as the corresponding value produced by symbols. Any other use of a backslash + will fail the parse. Skipping is disabled while parsing the entire + string, as if using lexeme[]. +

+
+

+ quoted_string(r, symbols) +

+
+

+ Matches some character Q + in r, followed by + zero or more characters, followed by Q. +

+
+

+ std::string +

+
+

+ The result does not include the Q + quotes. A Q within + the string can be written by escaping it with a backslash. A backslash + within the string can be written by writing two consecutive backslashes. + A backslash followed by a successful match using symbols + will be interpreted as the corresponding value produced by symbols. Any other use of a backslash + will fail the parse. Skipping is disabled while parsing the entire + string, as if using lexeme[]. +

+
+
+
+ + + + + +
[Important]Important

+ All the character parsers, like char_, cp and cu produce either char or char32_t + attributes. So when you see "std::string + if ATTR(p) is + char or char32_t, + otherwise std::vector<ATTR(p)>" + in the table above, that effectively means that every sequences of character + attributes get turned into a std::string. + The only time this does not happen is when you introduce your own rules with + attributes using another character type (or use attribute to do so). +

+

+ + Operators + defined on parsers +

+

+ Here are all the operator overloaded for parsers. In the tables below: +

+
    +
  • + c is a character of type + char or char32_t; +
  • +
  • + a is a semantic action; +
  • +
  • + r is an object whose type + models parsable_range_like + (see Concepts); + and +
  • +
  • + p, p1, + p2, ... are parsers. +
  • +
+
+ + + + + +
[Note]Note

+ Some of the expressions in this table consume no input. All parsers consume + the input they match unless otherwise stated in the table below. +

+
+

Table 1.2. Combining Operations and Their Semantics

+
++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Semantics +

+
+

+ Attribute Type +

+
+

+ Notes +

+
+

+ !p +

+
+

+ Matches iff p does + not match; consumes no input. +

+
+

+ None. +

+
+
+

+ &p +

+
+

+ Matches iff p matches; + consumes no input. +

+
+

+ None. +

+
+
+

+ *p +

+
+

+ Parses using p repeatedly + until p no longer + matches; always matches. +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ Matching eps + an unlimited number of times creates an infinite loop, which is undefined + behavior in C++. Boost.Parser will assert in debug mode when it encounters + *eps (this applies + to unconditional eps only). +

+
+

+ +p +

+
+

+ Parses using p repeatedly + until p no longer + matches; matches iff p + matches at least once. +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ Matching eps + an unlimited number of times creates an infinite loop, which is undefined + behavior in C++. Boost.Parser will assert in debug mode when it encounters + +eps (this applies + to unconditional eps only). +

+
+

+ -p +

+
+

+ Equivalent to p | eps. +

+
+

+ std::optional<ATTR(p)> +

+
+
+

+ p1 >> + p2 +

+
+

+ Matches iff p1 matches + and then p2 matches. +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2)> (See note.) +

+
+

+ >> is associative; + p1 >> + p2 >> + p3, (p1 >> + p2) + >> p3, + and p1 >> + (p2 + >> p3) are all equivalent. This attribute + type only applies to the case where p1 + and p2 both generate + attributes; see Attribute + Generation for the full rules. +

+
+

+ p >> + c +

+
+

+ Equivalent to p >> lit(c). +

+
+

+ ATTR(p) +

+
+
+

+ p >> + r +

+
+

+ Equivalent to p >> lit(r). +

+
+

+ ATTR(p) +

+
+
+

+ p1 > + p2 +

+
+

+ Matches iff p1 matches + and then p2 matches. + No back-tracking is allowed after p1 + matches; if p1 matches + but then p2 does + not, the top-level parse fails. +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2)> (See note.) +

+
+

+ > is associative; + p1 > + p2 > + p3, (p1 > + p2) + > p3, + and p1 > + (p2 + > p3) are all equivalent. This attribute + type only applies to the case where p1 + and p2 both generate + attributes; see Attribute + Generation for the full rules. +

+
+

+ p > + c +

+
+

+ Equivalent to p > lit(c). +

+
+

+ ATTR(p) +

+
+
+

+ p > + r +

+
+

+ Equivalent to p > lit(r). +

+
+

+ ATTR(p) +

+
+
+

+ p1 | + p2 +

+
+

+ Matches iff either p1 + matches or p2 matches. +

+
+

+ std::variant<ATTR(p1), ATTR(p2)> (See note.) +

+
+

+ | is associative; p1 | + p2 | + p3, (p1 | + p2) + | p3, + and p1 | + (p2 + | p3) are all equivalent. This attribute + type only applies to the case where p1 + and p2 both generate + attributes, and where the attribute types are different; see Attribute + Generation for the full rules. +

+
+

+ p | + c +

+
+

+ Equivalent to p | lit(c). +

+
+

+ ATTR(p) +

+
+
+

+ p | + r +

+
+

+ Equivalent to p | lit(r). +

+
+

+ ATTR(p) +

+
+
+

+ p1 || + p2 +

+
+

+ Matches iff p1 matches + and p2 matches, regardless + of the order they match in. +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2)> +

+
+

+ || is associative; + p1 || + p2 || + p3, (p1 || + p2) + || p3, + and p1 || + (p2 + || p3) are all equivalent. It is an error + to include a eps + (conditional or non-conditional) in an operator|| expression. Though the parsers + are matched in any order, the attribute elements are always in the + order written in the operator|| expression. +

+
+

+ p1 - + p2 +

+
+

+ Equivalent to !p2 + >> p1. +

+
+

+ ATTR(p1) +

+
+
+

+ p - + c +

+
+

+ Equivalent to p - lit(c). +

+
+

+ ATTR(p) +

+
+
+

+ p - + r +

+
+

+ Equivalent to p - lit(r). +

+
+

+ ATTR(p) +

+
+
+

+ p1 % + p2 +

+
+

+ Equivalent to p1 >> *(p2 >> + p1). +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p1)> +

+
+
+

+ p % + c +

+
+

+ Equivalent to p % lit(c). +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+
+

+ p % + r +

+
+

+ Equivalent to p % lit(r). +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+
+

+ p[a] +

+
+

+ Matches iff p matches. + If p matches, the + semantic action a + is executed. +

+
+

+ None. +

+
+
+
+
+ + + + + +
[Important]Important

+ All the character parsers, like char_, cp and cu produce either char or char32_t + attributes. So when you see "std::string + if ATTR(p) is + char or char32_t, + otherwise std::vector<ATTR(p)>" + in the table above, that effectively means that every sequences of character + attributes get turned into a std::string. + The only time this does not happen is when you introduce your own rules with + attributes using another character type (or use attribute to do so). +

+

+ There are a couple of special rules not captured in the table above: +

+

+ First, the zero-or-more and one-or-more repetitions (operator*() and operator+(), respectively) may collapse when combined. + For any parser p, +(+p) + collapses to +p; + **p, + *+p, + and +*p + each collapse to just *p. +

+

+ Second, using eps + in an alternative parser as any alternative except + the last one is a common source of errors; Boost.Parser disallows it. This + is true because, for any parser p, + eps + | p + is equivalent to eps, + since eps + always matches. This is not true for eps parameterized with a condition. + For any condition cond, eps(cond) + is allowed to appear anywhere within an alternative parser. +

+

+ + Attribute + generation for certain parsers +

+

+ This table summarizes the attributes generated for all Boost.Parser parsers. + In the table below: +

+
    +
  • + RESOLVE() + is a notional macro that expands to the resolution of parse argument or + evaluation of a parse predicate (see The + Parsers And Their Uses); and +
  • +
  • + x and y + represent arbitrary objects. +
  • +
+
+

Table 1.3. Parsers and Their Attributes

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Parser +

+
+

+ Attribute Type +

+
+

+ Notes +

+
+

+ eps +

+
+

+ None. +

+
+
+

+ eol +

+
+

+ None. +

+
+
+

+ eoi +

+
+

+ None. +

+
+
+

+ attr(x) +

+
+

+ decltype(RESOLVE(x)) +

+
+
+

+ char_ +

+
+

+ The code point type in Unicode parsing, or char + in non-Unicode parsing; see below. +

+
+

+ Includes all the _p + UDLs + that take a single character, and all character class parsers like + control and lower. +

+
+

+ cp +

+
+

+ char32_t +

+
+
+

+ cu +

+
+

+ char +

+
+
+

+ lit(x) +

+
+

+ None. +

+
+

+ Includes all the _l + UDLs. +

+
+

+ string(x) +

+
+

+ std::string +

+
+

+ Includes all the _p + UDLs + that take a string. +

+
+

+ bool_ +

+
+

+ bool +

+
+
+

+ bin +

+
+

+ unsigned int +

+
+
+

+ oct +

+
+

+ unsigned int +

+
+
+

+ hex +

+
+

+ unsigned int +

+
+
+

+ ushort_ +

+
+

+ unsigned short +

+
+
+

+ uint_ +

+
+

+ unsigned int +

+
+
+

+ ulong_ +

+
+

+ unsigned long +

+
+
+

+ ulong_long +

+
+

+ unsigned long + long +

+
+
+

+ short_ +

+
+

+ short +

+
+
+

+ int_ +

+
+

+ int +

+
+
+

+ long_ +

+
+

+ long +

+
+
+

+ long_long +

+
+

+ long long +

+
+
+

+ float_ +

+
+

+ float +

+
+
+

+ double_ +

+
+

+ double +

+
+
+

+ symbols<T> +

+
+

+ T +

+
+
+
+

+ char_ + is a bit odd, since its attribute type is polymorphic. When you use char_ + to parse text in the non-Unicode code path (i.e. a string of char), the attribute is char. + When you use the exact same char_ to parse in the Unicode-aware + code path, all matching is code point based, and so the attribute type is the + type used to represent code points, char32_t. + All parsing of UTF-8 falls under this case. +

+

+ Here, we're parsing plain chars, + meaning that the parsing is in the non-Unicode code path, the attribute of + char_ + is char: +

+
auto result = parse("some text", boost::parser::char_);
+static_assert(std::is_same_v<decltype(result), std::optional<char>>));
+
+

+ When you parse UTF-8, the matching is done on a code point basis, so the attribute + type is char32_t: +

+
auto result = parse("some text" | boost::parser::as_utf8, boost::parser::char_);
+static_assert(std::is_same_v<decltype(result), std::optional<char32_t>>));
+
+

+ The good news is that usually you don't parse characters individually. When + you parse with char_, + you usually parse repetition of then, which will produce a std::string, + regardless of whether you're in Unicode parsing mode or not. If you do need + to parse individual characters, and want to lock down their attribute type, + you can use cp + and/or cu + to enforce a non-polymorphic attribute type. +

+

+ + Attributes + for operations on parsers +

+

+ Combining operations of course affect the generation of attributes. In the + tables below: +

+
    +
  • + m and n + are parse arguments that resolve to integral values; +
  • +
  • + pred is a parse predicate; +
  • +
  • + arg0, arg1, + arg2, ... are parse arguments; +
  • +
  • + a is a semantic action; + and +
  • +
  • + p, p1, + p2, ... are parsers that + generate attributes. +
  • +
+
+

Table 1.4. Combining Operations and Their Attributes

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Parser +

+
+

+ Attribute Type +

+
+

+ !p +

+
+

+ None. +

+
+

+ &p +

+
+

+ None. +

+
+

+ *p +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ +p +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ +*p +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ *+p +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ -p +

+
+

+ std::optional<ATTR(p)> +

+
+

+ p1 >> + p2 +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2)> +

+
+

+ p1 > + p2 +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2)> +

+
+

+ p1 >> + p2 >> + p3 +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2), ATTR(p3)> +

+
+

+ p1 > + p2 >> + p3 +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2), ATTR(p3)> +

+
+

+ p1 >> + p2 > + p3 +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2), ATTR(p3)> +

+
+

+ p1 > + p2 > + p3 +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2), ATTR(p3)> +

+
+

+ p1 | + p2 +

+
+

+ std::variant<ATTR(p1), ATTR(p2)> +

+
+

+ p1 | + p2 | + p3 +

+
+

+ std::variant<ATTR(p1), ATTR(p2), ATTR(p3)> +

+
+

+ p1 || + p2 +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2)> +

+
+

+ p1 || + p2 || + p3 +

+
+

+ boost::parser::tuple<ATTR(p1), ATTR(p2), ATTR(p3)> +

+
+

+ p1 % + p2 +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p1)> +

+
+

+ p[a] +

+
+

+ None. +

+
+

+ repeat(arg0)[p] +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ repeat(arg0, arg1)[p] +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ if_(pred)[p] +

+
+

+ std::optional<ATTR(p)> +

+
+

+ switch_(arg0)(arg1, p1)(arg2, p2)... +

+
+

+ std::variant<ATTR(p1), ATTR(p2), ...> +

+
+
+
+ + + + + +
[Important]Important

+ All the character parsers, like char_, cp and cu produce either char or char32_t + attributes. So when you see "std::string + if ATTR(p) is + char or char32_t, + otherwise std::vector<ATTR(p)>" + in the table above, that effectively means that every sequences of character + attributes get turned into a std::string. + The only time this does not happen is when you introduce your own rules with + attributes using another character type (or use attribute to do so). +

+
+ + + + + +
[Important]Important

+ In case you did not notice it above, adding a semantic action to a parser + erases the parser's attribute. The attribute is still available inside the + semantic action as _attr(ctx). +

+

+ + More + attributes for operations on parsers +

+

+ In the table: a is a semantic + action; and p, p1, p2, + ... are parsers that generate attributes. Note that only >> + is used here; > has the exact + same attribute generation rules. +

+
+

Table 1.5. Sequence and Alternative Combining Operations and Their Attributes

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Expression +

+
+

+ Attribute Type +

+
+

+ eps + >> eps +

+
+

+ None. +

+
+

+ p >> + eps +

+
+

+ ATTR(p) +

+
+

+ eps + >> p +

+
+

+ ATTR(p) +

+
+

+ cu + >> string("str") +

+
+

+ std::string +

+
+

+ string("str") >> + cu +

+
+

+ std::string +

+
+

+ *cu >> + string("str") +

+
+

+ boost::parser::tuple<std::string, std::string> +

+
+

+ string("str") >> + *cu +

+
+

+ boost::parser::tuple<std::string, std::string> +

+
+

+ p >> + p +

+
+

+ boost::parser::tuple<ATTR(p), ATTR(p)> +

+
+

+ *p + >> p +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ p >> + *p +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ *p + >> -p +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ -p + >> *p +

+
+

+ std::string if ATTR(p) is char + or char32_t, otherwise + std::vector<ATTR(p)> +

+
+

+ string("str") >> + -cu +

+
+

+ std::string +

+
+

+ -cu >> + string("str") +

+
+

+ std::string +

+
+

+ !p1 + | p2[a] +

+
+

+ None. +

+
+

+ p | + p +

+
+

+ ATTR(p) +

+
+

+ p1 | + p2 +

+
+

+ std::variant<ATTR(p1), ATTR(p2)> +

+
+

+ p | + eps +

+
+

+ std::optional<ATTR(p)> +

+
+

+ p1 | + p2 | + eps +

+
+

+ std::optional<std::variant<ATTR(p1), ATTR(p2)>> +

+
+

+ p1 | + p2[a] | p3 +

+
+

+ std::optional<std::variant<ATTR(p1), ATTR(p3)>> +

+
+
+
+
+ +
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_parser__proposed_/concepts.html b/doc/html/boost_parser__proposed_/concepts.html index e8948bf9..d2a127f4 100644 --- a/doc/html/boost_parser__proposed_/concepts.html +++ b/doc/html/boost_parser__proposed_/concepts.html @@ -44,18 +44,14 @@ concept parsable_range_like = parsable_range<T> || parsable_pointer<T>; template<typename T> -concept utf_pointer = - std::is_pointer_v<T> && code_unit<std::iter_value_t<T>>; -template<typename T> -concept range_like = - std::ranges::range<T> || utf_pointer<std::remove_cvref_t<T>>; +concept range_like = std::ranges::range<T> || parsable_pointer<T>; template< typename I, typename S, typename ErrorHandler, typename GlobalState> -using minimal_parse_context = decltype(detail::make_context( +using minimal_parse_context = decltype(detail::make_context<false, false>( std::declval<I>(), std::declval<S>(), std::declval<bool &>(), diff --git a/doc/html/boost_parser__proposed_/configuration_and_optional_features.html b/doc/html/boost_parser__proposed_/configuration_and_optional_features.html index b3395e6f..42188a4c 100644 --- a/doc/html/boost_parser__proposed_/configuration_and_optional_features.html +++ b/doc/html/boost_parser__proposed_/configuration_and_optional_features.html @@ -56,7 +56,7 @@ Boost.Parser automatically treats aggregate structs as if they were tuples in many cases. There is some metaprogramming logic that makes this work, and this logic has a hard limit on the size of a struct that it can operate on. There is a configuration - macro BOOST_PARSER_MAX_AGGREGATE_SIZE + macro BOOST_PARSER_MAX_AGGREGATE_SIZE that you can adjust if the default value is too small. Note that turning this value up significantly can significantly increase compile times. Also, MSVC seems to have a hard time with large values; I successfully set this value diff --git a/doc/html/boost_parser__proposed_/introduction.html b/doc/html/boost_parser__proposed_/introduction.html index d0fb0dde..eae4f57b 100644 --- a/doc/html/boost_parser__proposed_/introduction.html +++ b/doc/html/boost_parser__proposed_/introduction.html @@ -51,8 +51,8 @@ reporting the results of subparsers as they are finished, via callbacks. Boost.Parser accommodates all these ways of working, and even makes it possible to do callback-based or non-callback-based parsing without rewriting any code (except by changing - the top-level call from parse() - to callback_parse()). + the top-level call from parse() + to callback_parse()).

All of Boost.Parser's public interfaces are sentinel- and range-friendly, just @@ -91,7 +91,7 @@ to get a trace of your entire parse, with easy-to-read (and very verbose) indications of where each part of the trace is within the parse, the state of values produced by the parse, etc. Again, you don't need to write any code to make this happen - — you just pass a parameter to parse(). + — you just pass a parameter to parse().

Dependencies are still a nightmare in C++, so Boost.Parser can be used as a diff --git a/doc/html/boost_parser__proposed_/rationale.html b/doc/html/boost_parser__proposed_/rationale.html index 7e2d80dc..e53e7068 100644 --- a/doc/html/boost_parser__proposed_/rationale.html +++ b/doc/html/boost_parser__proposed_/rationale.html @@ -361,8 +361,8 @@

are cleared on parse failure

- At the end of a call to any of the parse() - overloads that takes an attribute out-param (including variants like callback_parse(), etc.), the parse either succeeds + At the end of a call to any of the parse() + overloads that takes an attribute out-param (including variants like callback_parse(), etc.), the parse either succeeds or fails. If the call fails, the attribute is explicitly "cleared" by assigning its default-constructed value.

@@ -388,7 +388,7 @@

attribute does not know do clear its attribute.

- This is why the explicit clearing behavior happens at the end of parse(). This is not without its downsides, + This is why the explicit clearing behavior happens at the end of parse(). This is not without its downsides, though. Consider this.

// With explicit clearing.
diff --git a/doc/html/boost_parser__proposed_/this_library_s_relationship_to_boost_spirit.html b/doc/html/boost_parser__proposed_/this_library_s_relationship_to_boost_spirit.html
index 60db9322..43fceb4d 100644
--- a/doc/html/boost_parser__proposed_/this_library_s_relationship_to_boost_spirit.html
+++ b/doc/html/boost_parser__proposed_/this_library_s_relationship_to_boost_spirit.html
@@ -7,12 +7,12 @@
 
 
 
-
+
 
 
 
 
-PrevUpHomeNext +PrevUpHomeNext

@@ -55,7 +55,10 @@
  • Spirit X3 is missing many of the convenient interfaces to parsers that - Spirit 2 had. For instance, you cannot add parameters to a parser. + Spirit 2 had. For instance, you cannot add parameters to a parser (see + description of _locals() + in More + About Rules).
  • All versions of Spirit have Unicode support, but it is quite difficult @@ -84,15 +87,91 @@ use approximately the same set of directives to influence the parse (e.g. lexeme[]);
  • -
  • - provide loosely-coupled rules that are separately compilable (at least - for Spirit X3); and -
  • are built around a flexible parse context object that has state added to and removed from it during the parse (again, comparing to Spirit X3).
  • +

    + + The + Spirit X3 rule problem +

    +

    + Some readers have wanted a concrete example of my claim that Spirit X3's rules + do not compose well. Consider this program. +

    +
    #include <boost/spirit/home/x3.hpp>
    +
    +#include <iostream>
    +#include <set>
    +#include <string>
    +#include <vector>
    +
    +
    +namespace x3 = boost::spirit::x3;
    +using ints_type = x3::rule<class ints, std::vector<int>>;
    +BOOST_SPIRIT_DECLARE(ints_type);
    +
    +x3::rule<class ints, std::vector<int>> ints = "ints";
    +constexpr auto ints_def = x3::int_ % ',';
    +BOOST_SPIRIT_DEFINE(ints);
    +
    +#define FIXED_ATTRIBUTE 0
    +
    +
    +int main()
    +{
    +    std::string input = "43, 42";
    +    auto first = input.begin();
    +    auto const last = input.end();
    +#if FIXED_ATTRIBUTE
    +    std::vector<int> result;
    +#else
    +    std::set<int> result;
    +#endif
    +    bool success = x3::phrase_parse(first, last, ints, x3::space, result);
    +    if (success) {
    +        // We want this to print "43 42\n".
    +        for (auto x : result) {
    +            std::cout << x << ' ';
    +        }
    +        std::cout << "\n";
    +    }
    +
    +    return 0;
    +}
    +
    +

    + Defining FIXED_ATTRIBUTE to + be 1 leads to a well-formed program + that prints "42 43\n" + instead of the desired result. The problem here is that if you feed an attribute + out-param to x3::phrase_parse(), + you get the loose-match semantics that Spirit X3 and Boost.Parser both do. + This is a problem, because the user explicitly asserted that the type of the + ints rule's attribute should + be std::vector<int>. In + my opinion, this code should be ill-formed with FIXED_ATTRIBUTE + == 1. + To make it well-formed again, the user could use ints_def + directly, since it does not specify an attribute type. +

    +

    + When the user explicitly states that a type is some fixed T, + a library should not ignore that. As a user of X3, I was bitten by this in + such a way that I considered X3 to be a nonviable option for my uses. I ran + into a problem that resulted from X3's ignoring one or more of my rules' attributes + so that it made the parse produce the wrong result, and I could see no way + to fix it. +

    +

    + When a library provides wider use cases via genericity, we generally consider + this a good thing. If it is too loose in its semantics, we generally say that + it is type-unsafe. Using rules to nail down type flexibility + is one way Boost.Parser tries to enable genericity where it is desired, and + let the user turn it off where it is not. +


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_parser__proposed_/tutorial.html b/doc/html/boost_parser__proposed_/tutorial.html index 23380152..8136b77e 100644 --- a/doc/html/boost_parser__proposed_/tutorial.html +++ b/doc/html/boost_parser__proposed_/tutorial.html @@ -6,13 +6,13 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_parser__proposed_/tutorial/a_trivial_example.html b/doc/html/boost_parser__proposed_/tutorial/a_trivial_example.html index 313cc4ee..6e10befa 100644 --- a/doc/html/boost_parser__proposed_/tutorial/a_trivial_example.html +++ b/doc/html/boost_parser__proposed_/tutorial/a_trivial_example.html @@ -34,7 +34,7 @@
    boost::parser::double_ >> boost::parser::double_
     

    - operator>>() + operator>> in this expression is the sequence-operator; read it as "followed by". If we combine the sequence-operator with Kleene star, we can get the parser we want by writing: @@ -44,7 +44,7 @@

    This is a parser that matches at least one double — because of the first double_ in the expression - above — followed by zero or more instances of a-comma-followed-by-a-double. Notice that we can use ',' directly. Though it is not a parser, operator>>() + above — followed by zero or more instances of a-comma-followed-by-a-double. Notice that we can use ',' directly. Though it is not a parser, operator>> and the other operators defined on Boost.Parser parsers have overloads that accept character/parser pairs of arguments; these operator overloads will create the right parser to recognize ','. @@ -82,15 +82,28 @@

    The first example filled in an out-parameter to deliver the result of the - parse. This call to parse() + parse. This call to parse() returns a result instead. As you can see, the result is contextually convertible to bool, and *result is some sort of range. In fact, - the return type of this call to parse() + the return type of this call to parse() is std::optional<std::vector<double>>. Naturally, if the parse fails, std::nullopt is returned. We'll look at how Boost.Parser maps the type of the parser to the return type, or the filled in out-parameter's type, a bit later.

    +
    + + + + + +
    [Note]Note

    + There's a type trait that can tell you the attribute type for a parser, + attribute + (and an associated alias attribute_t). We'll discuss + it more in the Attribute + Generation section. +

    If I run it in a shell, this is the result:

    diff --git a/doc/html/boost_parser__proposed_/tutorial/a_trivial_example_that_gracefully_handles_whitespace.html b/doc/html/boost_parser__proposed_/tutorial/a_trivial_example_that_gracefully_handles_whitespace.html index 3c39ddad..d926644a 100644 --- a/doc/html/boost_parser__proposed_/tutorial/a_trivial_example_that_gracefully_handles_whitespace.html +++ b/doc/html/boost_parser__proposed_/tutorial/a_trivial_example_that_gracefully_handles_whitespace.html @@ -23,8 +23,8 @@ Let's modify the trivial parser we just saw to ignore any spaces it might find among the doubles and commas. To skip whitespace wherever we find it, we can pass a skip parser - to our call to parse() (we don't need to touch - the parser passed to parse()). + to our call to parse() (we don't need to touch + the parser passed to parse()). Here, we use ws, which matches any Unicode whitespace character.

    @@ -61,7 +61,7 @@

    The skip parser, or skipper, is run between the subparsers - within the parser passed to parse(). + within the parser passed to parse(). In this case, the skipper is run before the first double is parsed, before any subsequent comma or double is parsed, and at the end. So, the strings "3.6,5.9" @@ -71,7 +71,7 @@

    Skipping is an important concept in Boost.Parser. You can skip anything, not just whitespace; there are lots of other things you might want to skip. - The skipper you pass to parse() + The skipper you pass to parse() can be an arbitrary parser. For example, if you write a parser for a scripting language, you can write a skipper to skip whitespace, inline comments, and end-of-line comments. diff --git a/doc/html/boost_parser__proposed_/tutorial/algorithms_and_views_that_use_parsers.html b/doc/html/boost_parser__proposed_/tutorial/algorithms_and_views_that_use_parsers.html index a8108822..cdb9100f 100644 --- a/doc/html/boost_parser__proposed_/tutorial/algorithms_and_views_that_use_parsers.html +++ b/doc/html/boost_parser__proposed_/tutorial/algorithms_and_views_that_use_parsers.html @@ -19,6 +19,12 @@ Algorithms and Views That Use Parsers

    +

    + Unless otherwise noted, all the algorithms and views are constrained very + much like the way the parse() + overloads are. The kinds of ranges, parsers, etc., that they accept are the + same. +

    boost::parser::search() @@ -27,7 +33,7 @@
    As shown in The parse() API, the two patterns of parsing in Boost.Parser are whole-parse and - prefix-parse. When you want to find something in the middle of the sequence + prefix-parse. When you want to find something in the middle of the range being parsed, there's no parse API for that. You can of course make a simple parser that skips everything before what you're looking for. @@ -48,12 +54,12 @@

    However, it often turns out you only need to find some subrange in the parsed - sequence. In these cases, it would be nice to turn this into a proper algorithm + range. In these cases, it would be nice to turn this into a proper algorithm in the pattern of the ones in std::ranges, - since that's more idiomatic. boost::parser::search() + since that's more idiomatic. boost::parser::search() is that algorithm. It has very similar semantics to std::ranges::search, - except that it searches not for a match to an exact subsequence, but to a - match with the given parser. Like std::ranges::search(), it returns a subrange (boost::parser::subrange + except that it searches not for a match to an exact subrange, but to a match + with the given parser. Like std::ranges::search(), it returns a subrange (boost::parser::subrange in C++17, std::ranges::subrange in C++20 and later).

    namespace bp = boost::parser;
    @@ -62,19 +68,19 @@ 
    assert(std::string_view(result.begin(), result.end() - result.begin()) == "XYZ");

    - Since boost::parser::search() returns a subrange, whatever + Since boost::parser::search() returns a subrange, whatever parser you give it produces no attribute. I wrote bp::lit("XYZ") above; if I had written bp::string("XYZ") instead, the result (and lack of std::string construction) would not change.

    - As you can see above, one aspect of boost::parser::search() + As you can see above, one aspect of boost::parser::search() differs intentionally from the conventions of the std::ranges algorithms — it accepts C-style strings, treating them as if they were proper ranges.

    - Also, boost::parser::search() knows how to accommodate + Also, boost::parser::search() knows how to accommodate your iterator type. You can pass the C-style string "aaXYZq" as in the example above, or "aaXYZq" | bp::as_utf32, @@ -92,7 +98,7 @@

    adaptors, this accommodation will operate correctly.

    - boost::parser::search() has multiple overloads. + boost::parser::search() has multiple overloads. You can pass a range or an iterator/sentinel pair, and you can pass a skip parser or not. That's four overloads. Also, all four overloads take an optional boost::parser::trace @@ -123,7 +129,7 @@

    assert(count == 4);

    - All the details called out in the subsection on boost::parser::search() + All the details called out in the subsection on boost::parser::search() above apply to boost::parser::search_all: its parser produces no attributes; it accepts C-style strings as if they were ranges; and it knows how to get from the internally-used iterator type back to the given @@ -165,7 +171,7 @@

    assert(count == 5);

    - All the details called out in the subsection on boost::parser::search() + All the details called out in the subsection on boost::parser::search() above apply to boost::parser::split: its parser produces no attributes; it accepts C-style strings as if they were ranges; and it knows how to get from the internally-used iterator type @@ -211,15 +217,16 @@

    is empty.

    namespace bp = boost::parser;
    -auto rng = "XYZaaXYZbaabaXYZXYZ" | bp::replace(bp::lit("XYZ"), "foo");
    +auto card_number = bp::int_ >> bp::repeat(3)['-' >> bp::int_];
    +auto rng = "My credit card number is 1234-5678-9012-3456." | bp::replace(card_number, "XXXX-XXXX-XXXX-XXXX");
     int count = 0;
    -// Prints foo aa foo baaba foo foo.
    +// Prints My credit card number is XXXX-XXXX-XXXX-XXXX.
     for (auto subrange : rng) {
    -    std::cout << std::string_view(subrange.begin(), subrange.end() - subrange.begin()) << " ";
    +    std::cout << std::string_view(subrange.begin(), subrange.end() - subrange.begin());
         ++count;
     }
     std::cout << "\n";
    -assert(count == 6);
    +assert(count == 3);
     

    If the iterator types Ir @@ -236,13 +243,13 @@

    is easily joined back into a single range.

    namespace bp = boost::parser;
    -char const str[] = "XYZaaXYZbaabaXYZXYZ";
    -auto rng = str | bp::replace(bp::lit("XYZ"), "foo") | std::views::join;
    +auto card_number = bp::int_ >> bp::repeat(3)['-' >> bp::int_];
    +auto rng = "My credit card number is 1234-5678-9012-3456." | bp::replace(card_number, "XXXX-XXXX-XXXX-XXXX") | std::views::join;
     std::string replace_result;
     for (auto ch : rng) {
         replace_result.push_back(ch);
     }
    -assert(replace_result == "fooaafoobaabafoofoo");
    +assert(replace_result == "My credit card number is XXXX-XXXX-XXXX-XXXX.");
     

    Note that we could not have written std::string @@ -261,6 +268,14 @@

    long C-style strings to boost::parser::replace and not pay to see the end until the range is used, don't.

    +

    + ReplacementV is constrained + almost exactly the same as V. + V must model parsable_range and std::ranges::viewable_range. + ReplacementV is the same, + except that it can also be a std::ranges::input_range, + whereas V must be a std::ranges::forward_range. +

    You may wonder what happens when you pass a UTF-N range for r, and a UTF-M range for replacement. What happens in this case is silent transcoding of replacement @@ -268,9 +283,9 @@

    doesn't require memory allocation; boost::parser::replace just slaps | boost::parser::as_utfN onto replacement. However, since Boost.Parser treats char - sequences as unknown encoding, boost::parser::replace will not transcode - from char sequences. So calls - like this won't work: + ranges as unknown encoding, boost::parser::replace will not transcode + from char ranges. So calls like + this won't work:

    char const str[] = "some text";
     char const replacement_str[] = "some text";
    @@ -281,12 +296,12 @@ 
    This does not work, even though char and UTF-8 are the same size. If r and replacement are both - sequences of char, everything - will work of course. It's just mixing char - and UTF-encoded sequences that does not work. + ranges of char, everything will + work of course. It's just mixing char + and UTF-encoded ranges that does not work.

    - All the details called out in the subsection on boost::parser::search() + All the details called out in the subsection on boost::parser::search() above apply to boost::parser::replace: its parser produces no attributes; it accepts C-style strings for the r and replacement parameters as if they were ranges; and it knows how to get from the internally-used diff --git a/doc/html/boost_parser__proposed_/tutorial/alternative_parsers.html b/doc/html/boost_parser__proposed_/tutorial/alternative_parsers.html index ed7c3a76..93fbbcbf 100644 --- a/doc/html/boost_parser__proposed_/tutorial/alternative_parsers.html +++ b/doc/html/boost_parser__proposed_/tutorial/alternative_parsers.html @@ -6,13 +6,13 @@ - - + +

    -PrevUpHomeNext +PrevUpHomeNext

    @@ -21,7 +21,7 @@

    Frequently, you need to parse something that might have one of several forms. - operator|() + operator| is overloaded to form alternative parsers. For example:

    namespace bp = boost::parser;
    @@ -90,7 +90,7 @@
     

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/boost_parser__proposed_/tutorial/attribute_generation.html b/doc/html/boost_parser__proposed_/tutorial/attribute_generation.html index e55c9647..82910bf2 100644 --- a/doc/html/boost_parser__proposed_/tutorial/attribute_generation.html +++ b/doc/html/boost_parser__proposed_/tutorial/attribute_generation.html @@ -45,7 +45,7 @@ Within semantic actions, asking for the attribute of a non-attribute-producing parser (using _attr(ctx)) will yield a value of the special type boost::parser::none. - When calling parse() in a form that returns + When calling parse() in a form that returns the attribute parsed, when there is no attribute, simply returns bool; this indicates the success of failure of the parse.

    @@ -63,6 +63,42 @@
    + The + attribute type trait, attribute +
    +

    + You can use attribute + (and the associated alias, attribute_t) to determine the + attribute a parser would have if it were passed to parse(). + Since at least one parser (char_) has a polymorphic attribute + type, attribute + also takes the type of the range being parsed. If a parser produces no attribute, + attribute + will produce none, + not void. +

    +

    + If you want to feed an iterator/sentinel pair to attribute, create a range from + it like so: +

    +
    constexpr auto parser = /* ... */;
    +auto first = /* ... */;
    +auto const last = /* ... */;
    +
    +namespace bp = boost::parser;
    +// You can of course use std::ranges::subrange directly in C++20 and later.
    +using attr_type = bp::attribute_t<decltype(BOOST_PARSER_SUBRANGE(first, last)), decltype(parser)>;
    +
    +

    + There is no single attribute type for any parser, since a parser can be placed + within omit[], which makes its attribute + type none. + Therefore, attribute + cannot tell you what attribute your parser will produce under all circumstances; + it only tells you what it would produce if it were passed to parse(). +

    +
    + Parser attributes
    @@ -74,7 +110,8 @@
  • RESOLVE() is a notional macro that expands to the resolution of parse argument - or evaluation of a parse predicate, and + or evaluation of a parse predicate (see The + Parsers And Their Uses); and
  • x and y @@ -82,7 +119,7 @@
  • -

    Table 1.3. Parsers and Their Attributes

    +

    Table 1.8. Parsers and Their Attributes

    @@ -215,7 +252,7 @@

    - lit(x) + lit(x)

    @@ -499,7 +536,7 @@
    to enforce a non-polymorphic attribute type.

    - + Combining operation attributes
    @@ -530,7 +567,7 @@
    -

    Table 1.4. Combining Operations and Their Attributes

    +

    Table 1.9. Combining Operations and Their Attributes

    @@ -751,6 +788,33 @@
    + + + + + + + +
    +

    + p1 || + p2 +

    +
    +

    + boost::parser::tuple<ATTR(p1), ATTR(p2)> +

    +
    +

    + p1 || + p2 || + p3 +

    +
    +

    + boost::parser::tuple<ATTR(p1), ATTR(p2), ATTR(p3)> +

    +

    p1 % @@ -780,7 +844,7 @@

    - repeat(arg0)[p] + repeat(arg0)[p]

    @@ -794,7 +858,7 @@

    - repeat(arg0, arg1)[p] + repeat(arg0, arg1)[p]

    @@ -846,8 +910,7 @@
    in the table above, that effectively means that every sequences of character attributes get turned into a std::string. The only time this does not happen is when you introduce your own rules - with attributes using another character type (or use attr() - to do so). + with attributes using another character type (or use attribute to do so).

    @@ -867,7 +930,7 @@
    examples below.)

    - + Sequence parser attribute rules
    @@ -1009,7 +1072,7 @@
    - + Alternative parser attribute rules
    @@ -1041,7 +1104,7 @@
    - + Formation of containers in attributes
    @@ -1071,7 +1134,7 @@
    special case.

    - + Another special case: std::string assignment
    @@ -1088,13 +1151,13 @@

    ... you are even more likely to have made a mistake. Though this should work, because the assignment in std::string s; s - = 3.6; is well-formed, Boost.Parser forbids it. + = 3; is well-formed, Boost.Parser forbids it. If you write parsing code like the snippet above, you will get a static assertion. If you really do want to assign a float or whatever to a std::string, do it in a semantic action.

    - + Examples of attributes generated by sequence and alternative parsers
    @@ -1106,7 +1169,7 @@
    same attribute generation rules.

    -

    Table 1.5. Sequence and Alternative Combining Operations and Their Attributes

    +

    Table 1.10. Sequence and Alternative Combining Operations and Their Attributes

    @@ -1399,7 +1462,7 @@

    - + Controlling attribute generation with merge[] and separate[] @@ -1478,7 +1541,7 @@
    produces the attribute boost::parser::tuple<std::string, char32_t>.

    - + merge[] and separate[] in more detail
    @@ -1520,8 +1583,89 @@
    different attribute types, the use of merge[] is an error.

    +

    + Many directives create a new parser out of the parser they are given. merge[] and separate[] + do not. Since they operate only on sequence parsers, all they do is create + a copy of the sequence parser they are given. The seq_parser template has a template + parameter CombiningGroups, + and all merge[] and separate[] + do is take a given seq_parser and create a copy + of it with a different CombiningGroups + template parameter. This means that merge[] + and separate[] are can be ignored in operator>> + expressions much like parentheses are. Consider an example. +

    +
    namespace bp = boost::parser;
    +constexpr auto parser1 = bp::separate[bp::int_ >> bp::int_] >> bp::int_;
    +constexpr auto parser2 = bp::lexeme[bp::int_ >> ' ' >> bp::int_] >> bp::int_;
    +
    +

    + Note that separate[] is a no-op here; it's only + being used this way for this example. These parsers have different attribute + types. ATTR(parser1) + is boost::parser::tuple(int, + int, int). ATTR(parser2) is boost::parser::tuple(boost::parser::tuple(int, + int), int). This + is because bp::lexeme[] + wraps its given parser in a new parser. merge[] + does not. That's why, even though parser1 + and parser2 look so structurally + similar, they have different attributes. +

    - + + transform(f)[] +
    +

    + transform(f)[] + is a directive that transforms the attribute of a parser using the given + function f. For example: +

    +

    +

    +
    auto str_sum = [&](std::string const & s) {
    +    int retval = 0;
    +    for (auto ch : s) {
    +        retval += ch - '0';
    +    }
    +    return retval;
    +};
    +
    +namespace bp = boost::parser;
    +constexpr auto parser = +bp::char_;
    +std::string str = "012345";
    +
    +auto result = bp::parse(str, bp::transform(str_sum)[parser]);
    +assert(result);
    +assert(*result == 15);
    +static_assert(std::is_same_v<decltype(result), std::optional<int>>);
    +
    +

    +

    +

    + Here, we have a function str_sum + that we use for f. It assumes + each character in the given std::string + s is a digit, and returns + the sum of all the digits in s. + Out parser parser would normally + return a std::string. However, since str_sum + returns a different type — int + — that is the attribute type of the full parser, bp::transform(by_value_str_sum)[parser], as you can see from the static_assert. +

    +

    + As is the case with attributes all throughout Boost.Parser, the attribute + passed to f will be moved. + You can take it by const &, + &&, or by value. +

    +

    + No distinction is made between parsers with and without an attribute, because + there is a Regular special no-attribute type that is generated by parsers + with no attribute. You may therefore write something like transform(f)[eps], and Boost.Parser will happily call f with this special no-attribute type. +

    +
    + Other directives that affect attribute generation
    diff --git a/doc/html/boost_parser__proposed_/tutorial/best_practices.html b/doc/html/boost_parser__proposed_/tutorial/best_practices.html index 858c935a..817b63da 100644 --- a/doc/html/boost_parser__proposed_/tutorial/best_practices.html +++ b/doc/html/boost_parser__proposed_/tutorial/best_practices.html @@ -51,6 +51,46 @@

    + Prefer + auto-generated attributes to semantic actions +
    +

    + There are multiple ways to get attributes out of a parser. You can: +

    +
      +
    • + use whatever attribute the parser generates; +
    • +
    • + provide an attribute out-argument to parse() + for the parser to fill in; +
    • +
    • + use one or more semantic actions to assign attributes from the parser + to variables outside the parser; +
    • +
    • + use callback parsing to provide attributes via callback calls. +
    • +
    +

    + All of these are fairly similar in how much effort they require, except for + the semantic action method. For the semantic action approach, you need to + have values to fill in from your parser, and keep them in scope for the duration + of the parse. +

    +

    + It is much more straight forward, and leads to more reusable parsers, to + have the parsers produce the attributes of the parse directly as a result + of the parse. +

    +

    + This does not mean that you should never use semantic actions. They are sometimes + necessary. However, you should default to using the other non-semantic action + methods, and only use semantic actions with a good reason. +

    +
    + If your parser takes end-user input, give rules names that you would want an end-user to see @@ -85,23 +125,6 @@
    'f', 'n', 'r', or 't' here", which is pretty helpful.

    - - Compile - separately when you know the type of your input will not change -
    -

    - If your input type will not change (for instance, if you always parse from - a std::string and nothing else), you can use separate compilation - to keep from recompiling your parsing code over and over in every translation - unit that includes it. For instance, in the JSON callback parser example, - there is a call to json::parse(), which is a template. However, - the function template is always instantiated with the same parameter: json_callbacks, - a type defined in the example. It would be possible to remove the template - parameter from json::parse(), forward declare json_callbacks - and json::parse(), and define them in a different implementation - file. -

    -
    Have a simple test that you can run to find ill-formed-code-as-asserts diff --git a/doc/html/boost_parser__proposed_/tutorial/callback_parsing.html b/doc/html/boost_parser__proposed_/tutorial/callback_parsing.html index 75ea4d7e..deb090a7 100644 --- a/doc/html/boost_parser__proposed_/tutorial/callback_parsing.html +++ b/doc/html/boost_parser__proposed_/tutorial/callback_parsing.html @@ -27,7 +27,7 @@ cases, you may want to generate attributes sometimes, and not others. callback_rules exist for these kinds of uses. A callback_rule is just like a rule, except that it allows the rule's attribute to be returned to the - caller via a callback, as long as the parse is started with a call to callback_parse() instead of parse(). Within a call to parse(), a callback_rule is identical + caller via a callback, as long as the parse is started with a call to callback_parse() instead of parse(). Within a call to parse(), a callback_rule is identical to a regular rule.

    @@ -73,11 +73,11 @@

    - You opt into callback parsing by parsing with a call to callback_parse() - instead of parse(). If you use callback_rules with parse(), they're just regular rules. + You opt into callback parsing by parsing with a call to callback_parse() + instead of parse(). If you use callback_rules with parse(), they're just regular rules. This allows you to choose whether to do "normal" attribute-generating/attribute-assigning - parsing with parse(), or callback parsing with - callback_parse(), without rewriting much + parsing with parse(), or callback parsing with + callback_parse(), without rewriting much parsing code, if any.

    diff --git a/doc/html/boost_parser__proposed_/tutorial/combining_operations.html b/doc/html/boost_parser__proposed_/tutorial/combining_operations.html index 8b396651..f309b73a 100644 --- a/doc/html/boost_parser__proposed_/tutorial/combining_operations.html +++ b/doc/html/boost_parser__proposed_/tutorial/combining_operations.html @@ -21,9 +21,11 @@

    Certain overloaded operators are defined for all parsers in Boost.Parser. - We've already seen some of them used in this tutorial, especially operator>>() - and operator|(), - which are used to form sequence parsers and alternative parsers, respectively. + We've already seen some of them used in this tutorial, especially operator>>, + operator|, + and operator||, + which are used to form sequence parsers, alternative parsers, and permutation + parsers, respectively.

    Here are all the operator overloaded for parsers. In the tables below: @@ -58,7 +60,7 @@

    -

    Table 1.2. Combining Operations and Their Semantics

    +

    Table 1.7. Combining Operations and Their Semantics

    @@ -443,6 +445,43 @@ + + + + + +
    +

    + p1 || + p2 +

    +
    +

    + Matches iff p1 + matches and p2 + matches, regardless of the order they match in. +

    +
    +

    + boost::parser::tuple<ATTR(p1), ATTR(p2)> +

    +
    +

    + || is associative; + p1 || + p2 || + p3, (p1 || + p2) + || p3, + and p1 || + (p2 + || p3) are all equivalent. It is an error + to include a eps (conditional + or non-conditional) in an operator|| expression. Though the parsers + are matched in any order, the attribute elements are always in + the order written in the operator|| expression. +

    +

    p1 - @@ -609,8 +648,7 @@ in the table above, that effectively means that every sequences of character attributes get turned into a std::string. The only time this does not happen is when you introduce your own rules - with attributes using another character type (or use attr() - to do so). + with attributes using another character type (or use attribute to do so).

    diff --git a/doc/html/boost_parser__proposed_/tutorial/directives.html b/doc/html/boost_parser__proposed_/tutorial/directives.html index 3d329d8f..d2e1c4c4 100644 --- a/doc/html/boost_parser__proposed_/tutorial/directives.html +++ b/doc/html/boost_parser__proposed_/tutorial/directives.html @@ -29,15 +29,67 @@

    The directives that are second order parsers are technically directives, but since they are also used to create parsers, it is more useful just to - focus on that. The directives repeat() + focus on that. The directives repeat() and if_() were already described in - the section on parsers; we won't say more about them here. + the section on parsers; we won't say much about them here.

    +
    + + Interaction + with sequence, alternative, and permutation parsers +

    - That leaves the directives that affect aspects of the parse: + Sequence, alternative, and permutation parsers do not nest in most cases. + (Let's consider just sequence parsers to keep thinkgs simple, but most of + this logic applies to alternative parsers as well.) a + >> b + >> c + is the same as (a + >> b) >> c and a + >> (b >> c), and + they are each represented by a single seq_parser with three subparsers, + a, b, + and c. However, if something + prevents two seq_parsers + from interacting directly, they will nest. + For instance, lexeme[a >> b] >> + c is a seq_parser containing two parsers, + lexeme[a >> b] and + c. This is because lexeme[] takes its given parser and + wraps it in a lexeme_parser. This in turn + turns off the sequence parser combining logic, since both sides of the second + operator>> + in lexeme[a >> b] >> + c are not seq_parsers. Sequence parsers + have several rules that govern what the overall attribute type of the parser + is, based on the positions and attributes of it subparsers (see Attribute + Generation). Therefore, it's important to know which directives create + a new parser (and what kind), and which ones do not; this is indicated for + each directive below.

    - + + The + directives +
    +
    + + repeat() +
    +

    + See The + Parsers And Their Uses. Creates a repeat_parser. +

    +
    + + if_() +
    +

    + See The + Parsers And Their Uses. Creates a seq_parser. +

    +
    + omit[]

    @@ -57,8 +109,11 @@

    all those attributes, or rewriting p without the attribute generation, use omit[].

    +

    + Creates an omit_parser. +

    - + raw[]

    @@ -69,8 +124,8 @@

    subrange<I>, where I is the type of the iterator used within the parse. Note that this may not be the same as the - iterator type passed to parse(). - For instance, when parsing UTF-8, the iterator passed to parse() + iterator type passed to parse(). + For instance, when parsing UTF-8, the iterator passed to parse() may be char8_t const *, but within the parse it will be a UTF-8 to UTF-32 transcoding (converting) iterator. Just like omit[], raw[] @@ -83,8 +138,11 @@
    locations of all non-overlapping matches of p in a string.

    +

    + Creates a raw_parser. +

    - + string_view[]

    @@ -93,7 +151,7 @@

    that it changes the attribute of p to std::basic_string_view<C>, where C is the character - type of the underlying sequence being parsed. string_view[] + type of the underlying range being parsed. string_view[] requires that the underlying range being parsed is contiguous. Since this can only be detected in C++20 and later, string_view[] is not available in C++17 mode. @@ -107,8 +165,11 @@
    is more natural to use to report the locations depends on your use case, but they are essentially the same.

    +

    + Creates a string_view_parser. +

    - + no_case[]

    @@ -122,7 +183,9 @@

    case folding). In the non-Unicode code path, a full Unicode case folding is not done; instead, only the transformations of values less than 0x100 are done. Examples:

    -
    namespace bp = boost::parser;
    +
    #include <boost/parser/transcode_view.hpp> // For as_utfN.
    +
    +namespace bp = boost::parser;
     auto const street_parser = bp::string(u8"Tobias Straße");
     assert(!bp::parse("Tobias Strasse" | bp::as_utf32, street_parser));             // No match.
     assert(bp::parse("Tobias Strasse" | bp::as_utf32, bp::no_case[street_parser])); // Match!
    @@ -162,8 +225,11 @@ 
    NFKC normalization form.

    +

    + Creates a no_case_parser. +

    - + lexeme[]

    @@ -183,14 +249,17 @@

    match "foo bar", but the generated attribute would be "foobar".

    +

    + Creates a lexeme_parser. +

    - + skip[]

    skip[] is like the inverse of lexeme[]. It enables skipping in the parse, even if it was not enabled before. For example, within a call to - parse() that uses a skipper, let's + parse() that uses a skipper, let's say we have these parsers in use:

    namespace bp = boost::parser;
    @@ -201,14 +270,14 @@ 
    The use of lexeme[] disables skipping, but then the use of skip[] turns it back on. The net result is that the first occurrence of one_or_more - will use the skipper passed to parse(); + will use the skipper passed to parse(); the second will not.

    skip[] has another use. You can parameterize skip with a different parser to change the skipper just within the scope - of the directive. Let's say we passed ws to parse(), - and we're using these parsers somewhere within that parse() + of the directive. Let's say we passed ws to parse(), + and we're using these parsers somewhere within that parse() call:

    namespace bp = boost::parser;
    @@ -217,18 +286,30 @@ 

    The first occurrence of zero_or_more - will use the skipper passed to parse(), + will use the skipper passed to parse(), which is ws; the second will use blank as its skipper.

    +

    + Creates a skip_parser. +

    - - merge[] and separate[] + + merge[], separate[], + and transform(f)[]

    - These two directives influence the generation of attributes. See Attribute + These directives influence the generation of attributes. See Attribute Generation section for more details on them.

    +

    + merge[] and separate[] + create a copy of the given seq_parser. +

    +

    + transform(f)[] + creates a tranform_parser. +

    - + Locals

    The rule template takes another template parameter we have not discussed yet. You - can pass a third parameter to rule, which will be available - within semantic actions used in the rule as _locals(ctx). This - gives your rule some local state, if it needs it: + can pass a third parameter LocalState + to rule, + which will be defaulted csontructed by the rule, and made available within + semantic actions used in the rule as _locals(ctx). This + gives your rule some local state, if it needs it. The type of LocalState can be anything regular. It + could be a single value, a struct containing multiple values, or a tuple, + among others.

    struct foo_locals
     {
    @@ -568,59 +528,167 @@ 
    to track state as they parse.

    - + Parameters

    - Sometimes, it is convenient to parameterize parsers. Consider this parsing - rule from the YAML 1.2 + Sometimes, it is convenient to parameterize parsers. Consider these parsing + rules from the YAML 1.2 spec:

    -
    [137] c-flow-sequence(n,c) ::= “[” s-separate(n,c)?
    -                               ns-s-flow-seq-entries(n,in-flow(c))? “]”
    +
    [80]
    +s-separate(n,BLOCK-OUT) ::= s-separate-lines(n)
    +s-separate(n,BLOCK-IN)  ::= s-separate-lines(n)
    +s-separate(n,FLOW-OUT)  ::= s-separate-lines(n)
    +s-separate(n,FLOW-IN)   ::= s-separate-lines(n)
    +s-separate(n,BLOCK-KEY) ::= s-separate-in-line
    +s-separate(n,FLOW-KEY)  ::= s-separate-in-line
    +
    +[136]
    +in-flow(n,FLOW-OUT)  ::= ns-s-flow-seq-entries(n,FLOW-IN)
    +in-flow(n,FLOW-IN)   ::= ns-s-flow-seq-entries(n,FLOW-IN)
    +in-flow(n,BLOCK-KEY) ::= ns-s-flow-seq-entries(n,FLOW-KEY)
    +in-flow(n,FLOW-KEY)  ::= ns-s-flow-seq-entries(n,FLOW-KEY)
    +
    +[137]
    +c-flow-sequence(n,c) ::= “[” s-separate(n,c)? in-flow(c)? “]”
    +
     

    - This YAML rule says that the parsing should proceed into two YAML subrules, - both of which have these n - and c parameters. It is certainly + YAML [137] says that the parsing should proceed into two YAML subrules, both + of which have these n and + c parameters. It is certainly possible to transliterate these YAML parsing rules to something that uses unparameterized Boost.Parser rules, but it is quite painful - to do so. + to do so. It is better to use a parameterized rule.

    You give parameters to a rule by calling its with() member. The values you pass to with() are used to create a boost::parser::tuple that is available in semantic actions attached to the rule, using _params(ctx).

    +

    + Passing parameters to rules like this allows you + to easily write parsers that change the way they parse depending on contextual + data that they have already parsed. +

    +

    + Here is an implementation of YAML [137]. It also implements the two YAML + rules used directly by [137], rules [136] and [80]. The rules that those rules use are also represented below, but are + implemented using only eps, so that I don't have + to repeat too much of the (very large) YAML spec. +

    +

    +

    namespace bp = boost::parser;
     
    -// Declare our rules.
    -bp::rule</* ... */> foo = "foo";
    -bp::rule</* ... */> bar = "bar";
    +// A type to represent the YAML parse context.
    +enum class context {
    +    block_in,
    +    block_out,
    +    block_key,
    +    flow_in,
    +    flow_out,
    +    flow_key
    +};
     
    -// Get the first parameter for this rule.
    -auto first_param = [](auto & ctx) {
    -    using namespace boost::hana::literals;
    -    return _params(ctx)[0_c];
    +// A YAML value; no need to fill it in for this example.
    +struct value
    +{
    +    // ...
     };
    -auto const foo_def = bp::repeat(first_param)[' '_l]; // Match ' ' the number of times indicated by the first parameter to foo.
     
    -// Assume that bar has a locals struct with a local_indent member, and
    -// that set_local_indent and local_indent are lambdas that respectively write
    -// and read _locals(ctx).local_indent.
    +// YAML [66], just stubbed in here.
    +auto const s_separate_in_line = bp::eps;
    +
    +// YAML [137].
    +bp::rule<struct c_flow_seq_tag, value> c_flow_sequence = "c-flow-sequence";
    +// YAML [80].
    +bp::rule<struct s_separate_tag> s_separate = "s-separate";
    +// YAML [136].
    +bp::rule<struct in_flow_tag, value> in_flow = "in-flow";
    +// YAML [138]; just eps below.
    +bp::rule<struct ns_s_flow_seq_entries_tag, value> ns_s_flow_seq_entries =
    +    "ns-s-flow-seq-entries";
    +// YAML [81]; just eps below.
    +bp::rule<struct s_separate_lines_tag> s_separate_lines = "s-separate-lines";
     
    -// Parse an integer, and then pass that as a parameter to foo.
    -auto const bar_def = bp::int_[set_local_indent] >> foo.with(local_indent);
    +// Parser for YAML [137].
    +auto const c_flow_sequence_def =
    +    '[' >>
    +    -s_separate.with(bp::_p<0>, bp::_p<1>) >>
    +    -in_flow.with(bp::_p<0>, bp::_p<1>) >>
    +    ']';
    +// Parser for YAML [80].
    +auto const s_separate_def = bp::switch_(bp::_p<1>)
    +    (context::block_out, s_separate_lines.with(bp::_p<0>))
    +    (context::block_in, s_separate_lines.with(bp::_p<0>))
    +    (context::flow_out, s_separate_lines.with(bp::_p<0>))
    +    (context::flow_in, s_separate_lines.with(bp::_p<0>))
    +    (context::block_key, s_separate_in_line)
    +    (context::flow_key, s_separate_in_line);
    +// Parser for YAML [136].
    +auto const in_flow_def = bp::switch_(bp::_p<1>)
    +    (context::flow_out, ns_s_flow_seq_entries.with(bp::_p<0>, context::flow_in))
    +    (context::flow_in, ns_s_flow_seq_entries.with(bp::_p<0>, context::flow_in))
    +    (context::block_out, ns_s_flow_seq_entries.with(bp::_p<0>, context::flow_key))
    +    (context::flow_key, ns_s_flow_seq_entries.with(bp::_p<0>, context::flow_key));
     
    -BOOST_PARSER_DEFINE_RULES(foo, bar);
    +auto const ns_s_flow_seq_entries_def = bp::eps;
    +auto const s_separate_lines_def = bp::eps;
    +
    +BOOST_PARSER_DEFINE_RULES(
    +    c_flow_sequence,
    +    s_separate,
    +    in_flow,
    +    ns_s_flow_seq_entries,
    +    s_separate_lines);
     

    - Passing parameters to rules like this allows you - to easily write parsers that change the way they parse depending on contextual - data that they have already parsed. +

    +

    + YAML [137] (c_flow_sequence) + parses a list. The list may be empty, and must be surrounded by brackets, + as you see here. But, depending on the current YAML context (the c parameter to [137]), we may require certain + spacing to be matched by s-separate, + and how sub-parser in-flow behaves also depends on the current + context. +

    +

    + In s_separate above, we parse + differently based on the value of c. + This is done above by using the value of the second parameter to s_separate in a switch-parser. The second + parameter is looked up by using _p as a parse argument. +

    +

    + in_flow does something similar. + Note that in_flow calls its + subrule by passing its first parameter, but using a fixed value for the second + value. s_separate only passes + its n parameter conditionally. + The point is that a rule can be used with and without .with(), + and that you can pass constants or parse arguments to .with(). +

    +

    + With those rules defined, we could write a unit test for YAML [137] like + this: +

    +

    +

    +
    auto const test_parser = c_flow_sequence.with(4, context::block_out);
    +auto result = bp::parse("[]", test_parser);
    +assert(result);
    +
    +

    +

    +

    + You could extend this with tests for different values of n + and c. Obviously, in real + tests, you parse actual contents inside the "[]", + if the other rules were implemented, like [138].

    - + The _p variable template @@ -641,6 +709,96 @@
    an argument out of the parse context using _params(ctx)[0_c] or similar.

    +

    + Note that _p + is a parse argument (see The + Parsers And Their Uses), meaning that it is an invocable that takes + the context as its only parameter. If you want to use it inside a semantic + action, you have to call it. +

    +
    + + Special + forms of semantic actions usable within a rule +
    +

    + Semantic actions in this tutorial are usually of the signature void (auto + & ctx). That is, they take a context by reference, + and return nothing. If they were to return something, that something would + just get dropped on the floor. +

    +

    + It is a pretty common pattern to create a rule in order to get a certain + kind of value out of a parser, when you don't normally get it automatically. + If I want to parse an int, + int_ + does that, and the thing that I parsed is also the desired attribute. If + I parse an int followed by a + double, I get a boost::parser::tuple containing one of each. + But what if I don't want those two values, but some function of those two + values? I probably write something like this. +

    +
    struct obj_t { /* ... */ };
    +obj_t to_obj(int i, double d) { /* ... */ }
    +
    +namespace bp = boost::parser;
    +bp::rule<struct obj_tag, obj_t> obj = "obj";
    +auto make_obj = [](auto & ctx) {
    +    using boost::hana::literals;
    +    _val(ctx) = to_obj(_attr(ctx)[0_c], _attr(ctx)[1_c]);
    +};
    +constexpr auto obj_def = (bp::int_ >> bp::double_)[make_obj];
    +
    +

    + That's fine, if a little verbose. However, you can also do this instead: +

    +
    namespace bp = boost::parser;
    +bp::rule<struct obj_tag, obj_t> obj = "obj";
    +auto make_obj = [](auto & ctx) {
    +    using boost::hana::literals;
    +    return to_obj(_attr(ctx)[0_c], _attr(ctx)[1_c]);
    +};
    +constexpr auto obj_def = (bp::int_ >> bp::double_)[make_obj];
    +
    +

    + Above, we return the value from a semantic action, and the returned value + gets assigned to _val(ctx). +

    +

    + Finally, you can provide a function that takes the individual elements of + the attribute (if it's a tuple), and returns the value to assign to _val(ctx): +

    +
    namespace bp = boost::parser;
    +bp::rule<struct obj_tag, obj_t> obj = "obj";
    +constexpr auto obj_def = (bp::int_ >> bp::double_)[to_obj];
    +
    +

    + More formally, within a rule, the use of a semantic action is determined + as follows. Assume we have a function APPLY + that calls a function with the elements of a tuple, like std::apply. + For some context ctx, semantic + action action, and attribute + attr, action + is used like this: +

    +

    + - _val(ctx) = + APPLY(action, std::move(attr)), + if that is well-formed, and attr + is a tuple of size 2 or larger; +

    +

    + - otherwise, _val(ctx) = + action(ctx), if + that is well-formed; +

    +

    + - otherwise, action(ctx). +

    +

    + The first case does not pass the context to the action at all. The last case + is the normal use of semantic actions outside of rules. +

    - You can also call parse() - with a pointer to a null-terminated string of character values. parse() considers pointers to null-terminated + You can also call parse() + with a pointer to a null-terminated string of character values. parse() considers pointers to null-terminated strings to be ranges, since, for any pointer T * to a null-terminated string, T * is isomorphic with subrange<T *, null_sentinel_t>. @@ -153,7 +154,7 @@

    Since there is no way to indicate that p matches the input, but only a prefix of the input was matched, the range-like - (non-iterator/sentinel) overloads of parse() + (non-iterator/sentinel) overloads of parse() indicate failure if the entire input is not matched.

    @@ -170,14 +171,14 @@
    auto result_2 = bp::parse(str, p); // !!result_2 is true; *result_2 is "two words"

    - When you call parse() with + When you call parse() with an attribute out-parameter and parser p, the expected type is something like ATTR(p). It doesn't have to be exactly that; I'll explain in a bit. The return type is bool.

    - When you call parse() without + When you call parse() without an attribute out-parameter and parser p, the return type is std::optional<ATTR(p)>. Note that when ATTR(p) @@ -206,8 +207,8 @@

    of attribute out-parameters

    - For any call to parse() that takes an attribute - out-parameter, like parse("str", + For any call to parse() that takes an attribute + out-parameter, like parse("str", p, bp::ws, out), the call is well-formed for a number of possible types of out; decltype(out) does @@ -303,7 +304,7 @@

    to std::vector<int>, or std::vector<char32_t> to std::deque<int>), - the call to parse() will often still be + the call to parse() will often still be well-formed.
  • @@ -358,7 +359,7 @@

    The take-away for this last example is that the ability to arbitrarily swap - out data types within the type of the attribute you pass to parse() is very flexible, but is + out data types within the type of the attribute you pass to parse() is very flexible, but is also limited to structurally simple cases. When we discuss rules in the next section, we'll see how this flexibility in the types of attributes can help when writing complicated parsers. @@ -389,7 +390,7 @@

    This looks wrong, but is expected behavior. At every stage of the parse that produces an attribute, Boost.Parser tries to assign that attribute to some - part of the out-param attribute provided to parse(), + part of the out-param attribute provided to parse(), if there is one. Note that ATTR(parser) is std::string, because each sequence parser is three char_ parsers in a row, which forms a std::string; @@ -410,7 +411,7 @@

    parser would have appended to the string.

    - Boost.Parser never looks at the arity of the tuple passed to parse() to see if there are too + Boost.Parser never looks at the arity of the tuple passed to parse() to see if there are too many or too few elements in it, compared to the expected attribute for the parser. In this case, there are two extra elements that are never touched. If there had been too few elements in the tuple, you would have seen a compilation @@ -495,7 +496,7 @@

    versus non-Unicode parsing

    - A call to parse() either considers the entire + A call to parse() either considers the entire input to be in a UTF format (UTF-8, UTF-16, or UTF-32), or it considers the entire input to be in some unknown encoding. Here is how it deduces which case the call falls under: @@ -535,7 +536,7 @@

    If you want to ensure all input is parsed as Unicode, pass the input range r as r | boost::parser::as_utf32 - — that's the first thing that happens to it inside parse() in the Unicode parsing + — that's the first thing that happens to it inside parse() in the Unicode parsing path anyway.

    @@ -559,7 +560,7 @@

    Debugging parsers is notoriously difficult once they reach a certain size. - To get a verbose trace of your parse, pass boost::parser::trace::on as the final parameter to parse(). It will show you the current + To get a verbose trace of your parse, pass boost::parser::trace::on as the final parameter to parse(). It will show you the current parser being matched, the next few characters to be parsed, and any attributes generated. See the Error Handling and Debugging section of the tutorial for details. @@ -570,7 +571,7 @@

    and error handlers

    - Each call to parse() can optionally have a globals + Each call to parse() can optionally have a globals object associated with it. To use a particular globals object with you parser, you call with_globals() to create a new parser with the globals object in it: @@ -585,7 +586,7 @@

    auto result = boost::parser::parse("str", boost::parser::with_globals(parser, globals));
  • - Every semantic action within that call to parse() + Every semantic action within that call to parse() can access the same globals_t object using _globals(ctx).

    diff --git a/doc/html/boost_parser__proposed_/tutorial/the_parse_context.html b/doc/html/boost_parser__proposed_/tutorial/the_parse_context.html index b69cb693..c382d220 100644 --- a/doc/html/boost_parser__proposed_/tutorial/the_parse_context.html +++ b/doc/html/boost_parser__proposed_/tutorial/the_parse_context.html @@ -98,10 +98,18 @@

    _begin() and _end() - return the beginning and end of the range that you passed to parse(), respectively. _where() returns a subrange indicating the bounds + return the beginning and end of the range that you passed to parse(), respectively. _where() returns a subrange indicating the bounds of the input matched by the current parse. _where() can be useful if you just want to parse some text and return a result consisting of where certain elements are located, without producing any other attributes. + _where() can also be essential in + tracking where things are located, to provide good diagnostics at a later + point in the parse. Think mismatched tags in XML; if you parse a close-tag + at the end of an element, and it does not match the open-tag, you want to + produce an error message that mentions or shows both tags. Stashing _where(ctx).begin() + somewhere that is available to the close-tag parser will enable that. See + Error + Handling and Debugging for an example of this.

    @@ -109,10 +117,10 @@

    _error_handler() returns a reference to the - error handler associated with the parser passed to parse(). - See Error - Handling and Debugging for more information on what you can do with - the error handler. + error handler associated with the parser passed to parse(). + Using _error_handler(), you can generate errors + and warnings from within your semantic actions. See Error + Handling and Debugging for concrete examples.

    @@ -140,32 +148,59 @@
    _val()

    - _val() returns a reference to the + _val() returns a reference to the value of the attribute of the current rule being used to parse (if any), and is available even before the rule's parse is successful. It can be used to set the current rule's attribute, even from a parser that is a subparser inside the rule. Let's say we're writing a parser with a semantic action - that is within a rule. If we want to set the current rule's value to whatever - this subparser parses, we would write this semantic action: + that is within a rule. If we want to set the current rule's value to some + function of subparser's attribute, we would write this semantic action:

    -
    [](auto & ctx) { _val(ctx) = _attr(ctx); }
    +
    [](auto & ctx) { _val(ctx) = some_function(_attr(ctx)); }
     

    If there is no current rule, or the current rule has no attribute, a none is returned.

    +

    + You need to use _val() in cases where the default + attribute for a rule's + parser is not directly compatible with the attribute type of the rule. + In these cases, you'll need to write some code like the example above to + compute the rule's + attribute from the rule's + parser's generated attribute. For more info on rules, see the next page, and + More About + Rules. +

    _globals()

    _globals() returns a reference to a - user-supplied struct that contains whatever data you want to use during the - parse. We'll get into this more later, but for now, here's how you might - use it: + user-supplied object that contains whatever data you want to use during the + parse. The "globals" for a parse is an object — typically + a struct — that you give to the top-level parser. Then you can use + _globals() to access it at any time + during the parse. We'll see how globals get associated with the top-level + parser in The + parse() + API later. As an example, say that you have an early part of the parse + that needs to record some black-listed values, and that later parts of the + parse might need to parse values, failing the parse if they see the black-listed + values. In the early part of the parse, you could write something like this. +

    +
    [](auto & ctx) {
    +    // black_list is a std::unordered_set.
    +    _globals(ctx).black_list.insert(_attr(ctx));
    +}
    +
    +

    + Later in the parse, you could then use black_list + to check values as they are parsed.

    [](auto & ctx) {
    -    // black_list is some set of values that are not allowed.
         if (_globals(ctx).black_list.contains(_attr(ctx)))
             _pass(ctx) = false;
     }
    @@ -179,12 +214,16 @@ 
    or more values that are local to the current rule being parsed, if any. If there are two or more local values, _locals() returns a reference to a boost::parser::tuple. Rules with locals are - something we haven't gotten to yet, but here is how you use _locals(): + something we haven't gotten to yet (see More + About Rules), but for now all you need to know is that you can provide + a template parameter (LocalState) + to rule, + and the rule will default construct an object of that type for use within + the rule. You access it via _locals():

    [](auto & ctx) {
         auto & local = _locals(ctx);
    -    // Use local here.  If boost::parser::tuple aliases to hana::tuple, access
    -    // its members like this:
    +    // Use local here.  If 'local' is a hana::tuple, access its members like this:
         using namespace hana::literals;
         auto & first_element = local[0_c];
         auto & second_element = local[1_c];
    @@ -200,14 +239,19 @@ 

    _params(), like _locals(), - applies to the current rule being used to parse, if any. It also returns - a reference to a single value, if the current rule has only one parameter, - or a boost::parser::tuple - of multiple values if the current rule has multiple parameters. + applies to the current rule being used to parse, if any (see More + About Rules). It also returns a reference to a single value, if the + current rule has only one parameter, or a boost::parser::tuple of multiple values if + the current rule has multiple parameters. If there is no current rule, or + the current rule has no parameters, a none is returned.

    - If there is no current rule, or the current rule has no parameters, a none - is returned. + Unlike with _locals(), you do + not provide a template parameter to rule. Instead you call the + rule's + with() + member function (again, see More + About Rules).

    @@ -220,7 +264,7 @@
    accessors. none is convertible to anything that has a default constructor, convertible from anything, assignable form anything, and has templated overloads for - all the overloadable operators. The intention is that a misuse of _val(), _globals(), + all the overloadable operators. The intention is that a misuse of _val(), _globals(), etc. should compile, and produce an assertion at runtime. Experience has shown that using a debugger for investigating the stack that leads to your mistake is a far better user experience than sifting through compiler diagnostics. @@ -230,11 +274,14 @@
    - _no_case() + _no_case()

    - _no_case() returns true - if the current parse context is inside one or more (possibly nested) no_case[] directives. + _no_case() returns true + if the current parse context is inside one or more (possibly nested) no_case[] directives. I don't have a + use case for this, but if I didn't expose it, it would be the only thing + in the context that you could not examine from inside a semantic action. + It was easy to add, so I did.

    namespace boost {
       namespace parser {
    -    template<typename Parser, typename Action> struct action_parser;
    -    template<typename Attribute> struct attr_parser;
    -    struct bool_parser;
    -    template<typename TagType, typename Attribute, typename LocalState, 
    -             typename ParamsTuple> 
    -      struct callback_rule;
    -    template<typename Expected, typename AttributeType> struct char_parser;
    -    template<typename Tag> struct char_set_parser;
    -    template<typename Tag> struct char_subrange_parser;
    +    template<typename R, typename Parser> struct attribute;
         template<typename Parser, typename DelimiterParser> 
           struct delimited_seq_parser;
    -    struct digit_parser;
         template<template< class > class Parser> struct directive;
    -    struct eoi_parser;
    -    template<typename Predicate> struct eps_parser;
    -    template<typename Parser, bool FailOnMatch> struct expect_parser;
    -    template<typename T> struct float_parser;
         template<typename Predicate> struct if_directive;
    -    template<typename T, int Radix, int MinDigits, int MaxDigits, 
    -             typename Expected> 
    -      struct int_parser;
    -    template<typename Parser> struct lexeme_parser;
         struct merge_directive;
    -    template<typename Parser> struct no_case_parser;
         struct none;
    -    template<typename Parser> struct omit_parser;
         template<typename Parser> struct one_plus_parser;
         template<typename Parser> struct opt_parser;
         template<typename ParserTuple> struct or_parser;
         template<typename Parser, typename GlobalState, typename ErrorHandler> 
           struct parser_interface;
    -    template<typename Parser> struct raw_parser;
    +    template<typename ParserTuple> struct perm_parser;
    +    template<typename Quotes, typename Escapes> struct quoted_string_parser;
         template<typename MinType, typename MaxType> struct repeat_directive;
    -    template<typename Parser, typename DelimiterParser, typename MinType, 
    -             typename MaxType> 
    -      struct repeat_parser;
    -    template<typename TagType, typename Attribute, typename LocalState, 
    -             typename ParamsTuple> 
    -      struct rule;
    -    template<bool CanUseCallbacks, typename TagType, typename Attribute, 
    -             typename LocalState, typename ParamsTuple> 
    -      struct rule_parser;
         struct separate_directive;
    -    template<typename ParserTuple, typename BacktrackingTuple, 
    -             typename CombiningGroups> 
    -      struct seq_parser;
         template<typename SkipParser = detail::nope> struct skip_directive;
    -    template<typename Parser, typename SkipParser> struct skip_parser;
    -    template<typename StrIter, typename StrSentinel> struct string_parser;
    -    template<typename Parser> struct string_view_parser;
    -    template<typename SwitchValue, typename OrParser> struct switch_parser;
    -    template<typename T> struct symbol_parser;
         template<typename T> struct symbols;
    -    template<typename T, int Radix, int MinDigits, int MaxDigits, 
    -             typename Expected> 
    -      struct uint_parser;
    -    template<bool NewlinesOnly, bool NoNewlines> struct ws_parser;
    +    template<typename F> struct transform_directive;
         template<typename Parser> struct zero_plus_parser;
     
         enum trace;
     
    -    constexpr bool container;
         unspecified _p;
         int64_t const Inf;
         constexpr directive< omit_parser > omit;
    @@ -95,20 +56,21 @@
         constexpr merge_directive merge;
         constexpr separate_directive separate;
         unspecified eps;
    -    constexpr parser_interface< eoi_parser > eoi;
    +    constexpr parser_interface< eoi_parser > eoi;
         unspecified char_;
         unspecified cp;
         unspecified cu;
    +    constexpr parser_interface< quoted_string_parser<> > quoted_string;
         constexpr parser_interface< ws_parser< true, false > > eol;
         constexpr parser_interface< ws_parser< false, false > > ws;
         constexpr parser_interface< ws_parser< false, true > > blank;
    -    constexpr parser_interface< digit_parser > digit;
    +    constexpr parser_interface< digit_parser > digit;
         unspecified hex_digit;
         unspecified control;
         unspecified punct;
         unspecified lower;
         unspecified upper;
    -    constexpr parser_interface< bool_parser > bool_;
    +    constexpr parser_interface< bool_parser > bool_;
         constexpr parser_interface< uint_parser< unsigned int, 2 > > bin;
         constexpr parser_interface< uint_parser< unsigned int, 8 > > oct;
         constexpr parser_interface< uint_parser< unsigned int, 16 > > hex;
    @@ -122,170 +84,141 @@
         constexpr parser_interface< int_parser< long long > > long_long;
         constexpr parser_interface< float_parser< float > > float_;
         constexpr parser_interface< float_parser< double > > double_;
    -    template<typename Context> decltype(auto) _val(Context const &);
    -    template<typename Context> decltype(auto) _attr(Context const &);
    -    template<typename Context> decltype(auto) _where(Context const &);
    -    template<typename Context> decltype(auto) _begin(Context const &);
    -    template<typename Context> decltype(auto) _end(Context const &);
    -    template<typename Context> decltype(auto) _pass(Context const &);
    -    template<typename Context> decltype(auto) _locals(Context const &);
    -    template<typename Context> decltype(auto) _params(Context const &);
    -    template<typename Context> decltype(auto) _globals(Context const &);
    -    template<typename Context> decltype(auto) _error_handler(Context const &);
    -    template<typename Context> 
    -      void _report_error(Context const &, std::string_view);
    -    template<typename Context> 
    -      void _report_warning(Context const &, std::string_view);
    -    template<typename Context> 
    -      decltype(auto) _no_case(Context const & context);
    -    template<typename I, typename Context> 
    -      void _report_error(Context const & context, std::string_view message, 
    -                         I location);
    -    template<typename I, typename Context> 
    -      void _report_warning(Context const & context, std::string_view message, 
    -                           I location);
         template<typename Parser, typename GlobalState, typename ErrorHandler> 
           auto with_globals(unspecified, GlobalState &);
         template<typename Parser, typename GlobalState, typename ErrorHandler> 
           auto with_error_handler(parser_interface< Parser, GlobalState, default_error_handler > const &, 
                                   ErrorHandler &);
    -    template<typename T> constexpr repeat_directive< T, T > repeat(T);
    +    template<typename T> constexpr repeat_directive< T, T > repeat(T);
         template<typename MinType, typename MaxType> 
    -      constexpr repeat_directive< MinType, MaxType > repeat(MinType, MaxType);
    +      constexpr repeat_directive< MinType, MaxType > repeat(MinType, MaxType);
    +    template<typename F> auto transform(F);
         template<typename Attribute> constexpr auto attr(Attribute);
    -    constexpr auto lit(char);
    -    constexpr auto lit(char8_t);
    -    constexpr auto lit(char32_t);
    -    template<typename R>  string_parser(R r);
    -    template<typename R> constexpr auto string(R &&);
    -    template<typename R> constexpr auto lit(R &&);
    +    constexpr auto lit(char);
    +    constexpr auto lit(char8_t);
    +    constexpr auto lit(char32_t);
    +    template<parsable_range_like R> constexpr auto string(R &&);
    +    template<parsable_range_like R> constexpr auto lit(R &&);
         template<typename Predicate> constexpr auto if_(Predicate);
         template<typename T> constexpr auto switch_(T);
         template<typename Parser> 
    -      constexpr auto operator>>(char, parser_interface< Parser >);
    +      constexpr auto operator>>(char, parser_interface< Parser >);
         template<typename Parser> 
    -      constexpr auto operator>>(char32_t, parser_interface< Parser >);
    -    template<typename R, typename Parser, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      constexpr auto operator>>(R &&, parser_interface< Parser >);
    +      constexpr auto operator>>(char32_t, parser_interface< Parser >);
    +    template<parsable_range_like R, typename Parser> 
    +      constexpr auto operator>>(R &&, parser_interface< Parser >);
         template<typename Parser> 
    -      constexpr auto operator>(char, parser_interface< Parser >);
    +      constexpr auto operator>(char, parser_interface< Parser >);
         template<typename Parser> 
    -      constexpr auto operator>(char32_t, parser_interface< Parser >);
    -    template<typename R, typename Parser, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      constexpr auto operator>(R &&, parser_interface< Parser >);
    +      constexpr auto operator>(char32_t, parser_interface< Parser >);
    +    template<parsable_range_like R, typename Parser> 
    +      constexpr auto operator>(R &&, parser_interface< Parser >);
         template<typename Parser> 
    -      constexpr auto operator|(char, parser_interface< Parser >);
    +      constexpr auto operator|(char, parser_interface< Parser >);
         template<typename Parser> 
    -      constexpr auto operator|(char32_t, parser_interface< Parser >);
    -    template<typename R, typename Parser, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      constexpr auto operator|(R &&, parser_interface< Parser >);
    +      constexpr auto operator|(char32_t, parser_interface< Parser >);
    +    template<parsable_range_like R, typename Parser> 
    +      constexpr auto operator|(R &&, parser_interface< Parser >);
         template<typename Parser> 
    -      constexpr auto operator-(char, parser_interface< Parser >);
    +      constexpr auto operator-(char, parser_interface< Parser >);
         template<typename Parser> 
    -      constexpr auto operator-(char32_t, parser_interface< Parser >);
    -    template<typename R, typename Parser, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      constexpr auto operator-(R &&, parser_interface< Parser >);
    +      constexpr auto operator-(char32_t, parser_interface< Parser >);
    +    template<parsable_range_like R, typename Parser> 
    +      constexpr auto operator-(R &&, parser_interface< Parser >);
         template<typename Parser> 
    -      constexpr auto operator%(char, parser_interface< Parser >);
    +      constexpr auto operator%(char, parser_interface< Parser >);
         template<typename Parser> 
    -      constexpr auto operator%(char32_t, parser_interface< Parser >);
    -    template<typename R, typename Parser, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      constexpr auto operator%(R &&, parser_interface< Parser >);
    -    template<typename I, typename S, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename Attr, 
    -             typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
    -      bool prefix_parse(I &, S, 
    +      constexpr auto operator%(char32_t, parser_interface< Parser >);
    +    template<parsable_range_like R, typename Parser> 
    +      constexpr auto operator%(R &&, parser_interface< Parser >);
    +    template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
    +             typename GlobalState, 
    +             error_handler< I, S, GlobalState > ErrorHandler, typename Attr> 
    +      bool prefix_parse(I &, S, 
                             parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                             Attr &, trace = trace::off);
    -    template<typename R, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename Attr, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      bool parse(R const &, 
    +    template<parsable_range_like R, typename Parser, typename GlobalState, 
    +             typename ErrorHandler, typename Attr> 
    +      bool parse(R const &, 
                      parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                      Attr &, trace = trace::off);
    -    template<typename I, typename S, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, 
    -             typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
    -      auto prefix_parse(I &, S, 
    +    template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
    +             typename GlobalState, 
    +             error_handler< I, S, GlobalState > ErrorHandler> 
    +      auto prefix_parse(I &, S, 
                             parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                             trace = trace::off);
    -    template<typename R, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      auto parse(R const &, 
    +    template<parsable_range_like R, typename Parser, typename GlobalState, 
    +             typename ErrorHandler> 
    +      auto parse(R const &, 
                      parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                      trace = trace::off);
    -    template<typename I, typename S, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser, typename Attr, 
    -             typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
    -      bool prefix_parse(I &, S, 
    +    template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
    +             typename GlobalState, 
    +             error_handler< I, S, GlobalState > ErrorHandler, 
    +             typename SkipParser, typename Attr> 
    +      bool prefix_parse(I &, S, 
                             parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                             parser_interface< SkipParser > const &, Attr &, 
                             trace = trace::off);
    -    template<typename R, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser, typename Attr, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      bool parse(R const &, 
    +    template<parsable_range_like R, typename Parser, typename GlobalState, 
    +             typename ErrorHandler, typename SkipParser, typename Attr> 
    +      bool parse(R const &, 
                      parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                      parser_interface< SkipParser > const &, Attr &, 
                      trace = trace::off);
    -    template<typename I, typename S, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser, 
    -             typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
    -      auto prefix_parse(I &, S, 
    +    template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
    +             typename GlobalState, 
    +             error_handler< I, S, GlobalState > ErrorHandler, 
    +             typename SkipParser> 
    +      auto prefix_parse(I &, S, 
                             parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                             parser_interface< SkipParser > const &, 
                             trace = trace::off);
    -    template<typename R, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      auto parse(R const &, 
    +    template<parsable_range_like R, typename Parser, typename GlobalState, 
    +             typename ErrorHandler, typename SkipParser> 
    +      auto parse(R const &, 
                      parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                      parser_interface< SkipParser > const &, trace = trace::off);
    -    template<typename I, typename S, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename Callbacks, 
    -             typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
    -      bool callback_prefix_parse(I &, S, 
    +    template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
    +             typename GlobalState, 
    +             error_handler< I, S, GlobalState > ErrorHandler, 
    +             typename Callbacks> 
    +      bool callback_prefix_parse(I &, S, 
                                      parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                                      Callbacks const &, trace = trace::off);
    -    template<typename R, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename Callbacks, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      bool callback_parse(R const &, 
    +    template<parsable_range_like R, typename Parser, typename GlobalState, 
    +             typename ErrorHandler, typename Callbacks> 
    +      bool callback_parse(R const &, 
                               parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                               Callbacks const &, trace = trace::off);
    -    template<typename I, typename S, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser, typename Callbacks, 
    -             typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
    -      bool callback_prefix_parse(I &, S, 
    +    template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
    +             typename GlobalState, 
    +             error_handler< I, S, GlobalState > ErrorHandler, 
    +             typename SkipParser, typename Callbacks> 
    +      bool callback_prefix_parse(I &, S, 
                                      parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                                      parser_interface< SkipParser > const &, 
                                      Callbacks const &, trace = trace::off);
    -    template<typename R, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser, typename Callbacks, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      bool callback_parse(R const &, 
    +    template<parsable_range_like R, typename Parser, typename GlobalState, 
    +             typename ErrorHandler, typename SkipParser, typename Callbacks> 
    +      bool callback_parse(R const &, 
                               parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                               parser_interface< SkipParser > const &, 
                               Callbacks const &, trace = trace::off);
         namespace literals {
    -      constexpr auto operator""_l(char);
    -      constexpr auto operator""_l(char8_t);
    -      constexpr auto operator""_l(char32_t);
    -      constexpr auto operator""_l(char const *, std::size_t);
    -      constexpr auto operator""_l(char8_t const *, std::size_t);
    -      constexpr auto operator""_l(char32_t const *, std::size_t);
    -      constexpr auto operator""_p(char);
    -      constexpr auto operator""_p(char8_t);
    -      constexpr auto operator""_p(char32_t);
    -      constexpr auto operator""_p(char const *, std::size_t);
    -      constexpr auto operator""_p(char8_t const *, std::size_t);
    -      constexpr auto operator""_p(char32_t const *, std::size_t);
    +      constexpr auto operator""_l(char);
    +      constexpr auto operator""_l(char8_t);
    +      constexpr auto operator""_l(char32_t);
    +      constexpr auto operator""_l(char const *, std::size_t);
    +      constexpr auto operator""_l(char8_t const *, std::size_t);
    +      constexpr auto operator""_l(char32_t const *, std::size_t);
    +      constexpr auto operator""_p(char);
    +      constexpr auto operator""_p(char8_t);
    +      constexpr auto operator""_p(char32_t);
    +      constexpr auto operator""_p(char const *, std::size_t);
    +      constexpr auto operator""_p(char8_t const *, std::size_t);
    +      constexpr auto operator""_p(char32_t const *, std::size_t);
         }
       }
     }
    @@ -297,7 +230,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/header/boost/parser/replace_hpp.html b/doc/html/header/boost/parser/replace_hpp.html index 059ab19d..0a0c63ad 100644 --- a/doc/html/header/boost/parser/replace_hpp.html +++ b/doc/html/header/boost/parser/replace_hpp.html @@ -6,43 +6,43 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext
    namespace boost {
       namespace parser {
    -    template<typename V, typename ReplacementV, typename Parser, 
    -             typename GlobalState, typename ErrorHandler, typename SkipParser, 
    -             typename Enable = std::enable_if_t<            detail::replacement_for<ReplacementV, V> &&            (detail::range_utf_format_v<V> ==             detail::range_utf_format_v<ReplacementV>)> > 
    +    template<std::ranges::viewable_range V, 
    +             std::ranges::viewable_range ReplacementV, typename Parser, 
    +             typename GlobalState, typename ErrorHandler, typename SkipParser> 
           struct replace_view;
     
         unspecified replace;
         template<typename V, typename ReplacementV, typename Parser, 
                  typename GlobalState, typename ErrorHandler, typename SkipParser> 
    -       replace_view(V &&, 
    +       replace_view(V &&, 
                         parser_interface< Parser, GlobalState, ErrorHandler >, 
                         parser_interface< SkipParser >, ReplacementV &&, trace);
         template<typename V, typename ReplacementV, typename Parser, 
                  typename GlobalState, typename ErrorHandler, typename SkipParser> 
    -       replace_view(V &&, 
    +       replace_view(V &&, 
                         parser_interface< Parser, GlobalState, ErrorHandler >, 
                         parser_interface< SkipParser >, ReplacementV &&);
         template<typename V, typename ReplacementV, typename Parser, 
                  typename GlobalState, typename ErrorHandler> 
    -       replace_view(V &&, 
    +       replace_view(V &&, 
                         parser_interface< Parser, GlobalState, ErrorHandler >, 
                         ReplacementV &&, trace);
         template<typename V, typename ReplacementV, typename Parser, 
                  typename GlobalState, typename ErrorHandler> 
    -       replace_view(V &&, 
    +       replace_view(V &&, 
                         parser_interface< Parser, GlobalState, ErrorHandler >, 
                         ReplacementV &&);
       }
    @@ -55,7 +55,7 @@
     

    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/header/boost/parser/search_hpp.html b/doc/html/header/boost/parser/search_hpp.html index 86c53c60..5f9706c8 100644 --- a/doc/html/header/boost/parser/search_hpp.html +++ b/doc/html/header/boost/parser/search_hpp.html @@ -19,53 +19,51 @@ Header <boost/parser/search.hpp>
    namespace boost {
       namespace parser {
    -    template<typename V, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser> 
    +    template<std::ranges::viewable_range V, typename Parser, 
    +             typename GlobalState, typename ErrorHandler, typename SkipParser> 
           struct search_all_view;
     
         unspecified search_all;
    -    template<typename R, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      auto search(R &&, 
    +    template<parsable_range_like R, typename Parser, typename GlobalState, 
    +             typename ErrorHandler, typename SkipParser> 
    +      auto search(R &&, 
                       parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                       parser_interface< SkipParser > const &, trace = trace::off);
    -    template<typename I, typename S, typename Parser, typename SkipParser, 
    -             typename GlobalState, typename ErrorHandler, 
    -             typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
    -      auto search(I, S, 
    +    template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
    +             typename SkipParser, typename GlobalState, 
    +             error_handler< I, S, GlobalState > ErrorHandler> 
    +      auto search(I, S, 
                       parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                       parser_interface< SkipParser > const &, trace = trace::off);
    -    template<typename R, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, 
    -             typename Enable = std::enable_if_t<detail::is_parsable_range_like_v<R>> > 
    -      auto search(R &&, 
    +    template<parsable_range_like R, typename Parser, typename GlobalState, 
    +             typename ErrorHandler> 
    +      auto search(R &&, 
                       parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                       trace = trace::off);
    -    template<typename I, typename S, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, 
    -             typename Enable = std::enable_if_t<            detail::is_parsable_iter_v<I> &&            detail::is_equality_comparable_with_v<I, S>> > 
    -      auto search(I, S, 
    +    template<parsable_iter I, std::sentinel_for< I > S, typename Parser, 
    +             typename GlobalState, 
    +             error_handler< I, S, GlobalState > ErrorHandler> 
    +      auto search(I, S, 
                       parser_interface< Parser, GlobalState, ErrorHandler > const &, 
                       trace = trace::off);
         template<typename V, typename Parser, typename GlobalState, 
                  typename ErrorHandler, typename SkipParser> 
    -       search_all_view(V &&, 
    +       search_all_view(V &&, 
                            parser_interface< Parser, GlobalState, ErrorHandler >, 
                            parser_interface< SkipParser >, trace);
         template<typename V, typename Parser, typename GlobalState, 
                  typename ErrorHandler, typename SkipParser> 
    -       search_all_view(V &&, 
    +       search_all_view(V &&, 
                            parser_interface< Parser, GlobalState, ErrorHandler >, 
                            parser_interface< SkipParser >);
         template<typename V, typename Parser, typename GlobalState, 
                  typename ErrorHandler> 
    -       search_all_view(V &&, 
    +       search_all_view(V &&, 
                            parser_interface< Parser, GlobalState, ErrorHandler >, 
                            trace);
         template<typename V, typename Parser, typename GlobalState, 
                  typename ErrorHandler> 
    -       search_all_view(V &&, 
    +       search_all_view(V &&, 
                            parser_interface< Parser, GlobalState, ErrorHandler >);
       }
     }
    diff --git a/doc/html/header/boost/parser/split_hpp.html b/doc/html/header/boost/parser/split_hpp.html index c25dac23..7147fff0 100644 --- a/doc/html/header/boost/parser/split_hpp.html +++ b/doc/html/header/boost/parser/split_hpp.html @@ -6,39 +6,39 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext
    namespace boost {
       namespace parser {
    -    template<typename V, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser> 
    +    template<std::ranges::viewable_range V, typename Parser, 
    +             typename GlobalState, typename ErrorHandler, typename SkipParser> 
           struct split_view;
     
         unspecified split;
         template<typename V, typename Parser, typename GlobalState, 
                  typename ErrorHandler, typename SkipParser> 
    -       split_view(V &&, parser_interface< Parser, GlobalState, ErrorHandler >, 
    +       split_view(V &&, parser_interface< Parser, GlobalState, ErrorHandler >, 
                       parser_interface< SkipParser >, trace);
         template<typename V, typename Parser, typename GlobalState, 
                  typename ErrorHandler, typename SkipParser> 
    -       split_view(V &&, parser_interface< Parser, GlobalState, ErrorHandler >, 
    +       split_view(V &&, parser_interface< Parser, GlobalState, ErrorHandler >, 
                       parser_interface< SkipParser >);
         template<typename V, typename Parser, typename GlobalState, 
                  typename ErrorHandler> 
    -       split_view(V &&, parser_interface< Parser, GlobalState, ErrorHandler >, 
    +       split_view(V &&, parser_interface< Parser, GlobalState, ErrorHandler >, 
                       trace);
         template<typename V, typename Parser, typename GlobalState, 
                  typename ErrorHandler> 
    -       split_view(V &&, parser_interface< Parser, GlobalState, ErrorHandler >);
    +       split_view(V &&, parser_interface< Parser, GlobalState, ErrorHandler >);
       }
     }
    @@ -49,7 +49,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/header/boost/parser/subrange_hpp.html b/doc/html/header/boost/parser/subrange_hpp.html index 5c30c324..30deae3b 100644 --- a/doc/html/header/boost/parser/subrange_hpp.html +++ b/doc/html/header/boost/parser/subrange_hpp.html @@ -19,10 +19,14 @@ Header <boost/parser/subrange.hpp>
    namespace boost {
       namespace parser {
    -    template<typename I, typename S = I> struct subrange;
    -    template<typename I, typename S = I> 
    +    template<std::forward_iterator I, std::sentinel_for< I > S = I> 
    +      struct subrange;
    +    template<std::forward_iterator I, std::sentinel_for< I > S = I> 
           constexpr subrange< I, S > make_subrange(I, S);
       }
    +}namespace std {
    +  namespace ranges {
    +  }
     }
    namespace boost {
       namespace parser {
    -    template<typename V, typename F, typename Parser, typename GlobalState, 
    -             typename ErrorHandler, typename SkipParser, 
    -             typename Enable = std::enable_if_t<detail::transform_replacement_for<F, V, Parser>> > 
    +    template<std::ranges::viewable_range V, std::move_constructible F, 
    +             typename Parser, typename GlobalState, typename ErrorHandler, 
    +             typename SkipParser> 
           struct transform_replace_view;
     
         unspecified transform_replace;
         template<typename V, typename F, typename Parser, typename GlobalState, 
                  typename ErrorHandler, typename SkipParser> 
    -       transform_replace_view(V &&, 
    +       transform_replace_view(V &&, 
                                   parser_interface< Parser, GlobalState, ErrorHandler >, 
                                   parser_interface< SkipParser >, F &&, trace);
         template<typename V, typename F, typename Parser, typename GlobalState, 
                  typename ErrorHandler, typename SkipParser> 
    -       transform_replace_view(V &&, 
    +       transform_replace_view(V &&, 
                                   parser_interface< Parser, GlobalState, ErrorHandler >, 
                                   parser_interface< SkipParser >, F &&);
         template<typename V, typename F, typename Parser, typename GlobalState, 
                  typename ErrorHandler> 
    -       transform_replace_view(V &&, 
    +       transform_replace_view(V &&, 
                                   parser_interface< Parser, GlobalState, ErrorHandler >, 
                                   F &&, trace);
         template<typename V, typename F, typename Parser, typename GlobalState, 
                  typename ErrorHandler> 
    -       transform_replace_view(V &&, 
    +       transform_replace_view(V &&, 
                                   parser_interface< Parser, GlobalState, ErrorHandler >, 
                                   F &&);
       }
    diff --git a/doc/html/header/boost/parser/tuple_hpp.html b/doc/html/header/boost/parser/tuple_hpp.html
    index 6135de88..cdf1207d 100644
    --- a/doc/html/header/boost/parser/tuple_hpp.html
    +++ b/doc/html/header/boost/parser/tuple_hpp.html
    @@ -7,12 +7,12 @@
     
     
     
    -
    +
     
     
     
     
    -PrevUpHomeNext +PrevUpHomeNext

    @@ -25,7 +25,7 @@ template<typename T, typename U, U I> constexpr decltype(auto) get(T &&, integral_constant< U, I >); namespace literals { - template<char... chars> constexpr auto operator""_c(); + template<char... chars> constexpr auto operator""_c(); } } }

    @@ -37,7 +37,7 @@
    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/index.html b/doc/html/index.html index def1051c..53fe1eff 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -33,6 +33,7 @@ and Optional Features
    This Library's Relationship to Boost.Spirit
    +
    Cheat Sheet
    Tutorial
    Terminology
    @@ -51,6 +52,10 @@
    Rule Parsers
    Parsing into structs and classes
    +
    Alternative + Parsers
    +
    Parsing + Quoted Strings
    Parsing In Detail
    Backtracking
    @@ -58,8 +63,6 @@ Tables
    Mutable Symbol Tables
    -
    Alternative - Parsers
    The Parsers And Their Uses
    Directives
    @@ -98,7 +101,6 @@
    Compiler Support
    Reference
    -
    Header <boost/parser/concepts.hpp>
    Header <boost/parser/config.hpp>
    Header <boost/parser/error_handling.hpp>
    diff --git a/doc/html/reference.html b/doc/html/reference.html index 5f41af09..d3536257 100644 --- a/doc/html/reference.html +++ b/doc/html/reference.html @@ -7,18 +7,17 @@ - +
    -PrevUpHomeNext +PrevUpHomeNext

    Reference


    -PrevUpHomeNext +PrevUpHomeNext
    diff --git a/doc/html/standalone_HTML.manifest b/doc/html/standalone_HTML.manifest index 530ff22e..3ac14058 100644 --- a/doc/html/standalone_HTML.manifest +++ b/doc/html/standalone_HTML.manifest @@ -2,6 +2,7 @@ index.html boost_parser__proposed_/introduction.html boost_parser__proposed_/configuration_and_optional_features.html boost_parser__proposed_/this_library_s_relationship_to_boost_spirit.html +boost_parser__proposed_/cheat_sheet.html boost_parser__proposed_/tutorial.html boost_parser__proposed_/tutorial/terminology.html boost_parser__proposed_/tutorial/hello__whomever.html @@ -12,11 +13,12 @@ boost_parser__proposed_/tutorial/parsing_to_find_subranges.html boost_parser__proposed_/tutorial/the_parse_context.html boost_parser__proposed_/tutorial/rule_parsers.html boost_parser__proposed_/tutorial/parsing_into__struct_s_and__class_es.html +boost_parser__proposed_/tutorial/alternative_parsers.html +boost_parser__proposed_/tutorial/parsing_quoted_strings.html boost_parser__proposed_/tutorial/parsing_in_detail.html boost_parser__proposed_/tutorial/backtracking.html boost_parser__proposed_/tutorial/symbol_tables.html boost_parser__proposed_/tutorial/mutable_symbol_tables.html -boost_parser__proposed_/tutorial/alternative_parsers.html boost_parser__proposed_/tutorial/the_parsers_and_their_uses.html boost_parser__proposed_/tutorial/directives.html boost_parser__proposed_/tutorial/combining_operations.html @@ -36,23 +38,22 @@ boost_parser__proposed_/extended_examples/parsing_json_with_callbacks.html boost_parser__proposed_/concepts.html parser/compiler_support.html reference.html -header/boost/parser/concepts_hpp.html header/boost/parser/config_hpp.html -BOOST_PARSER_NO_R_idm22538.html +BOOST_PARSER_NO_R_idm29897.html BOOST_PARSER_ASSERT.html -BOOST_PARSER_DISA_idm22550.html -BOOST_PARSER_DISA_idm22554.html -BOOST_PARSER_MAX__idm22559.html +BOOST_PARSER_DISA_idm29909.html +BOOST_PARSER_DISA_idm29913.html +BOOST_PARSER_MAX__idm29918.html BOOST_PARSER_SUBRANGE.html -BOOST_PARSER_ALGO_idm22568.html +BOOST_PARSER_ALGO_idm29927.html BOOST_PARSER_USE_CONCEPTS.html BOOST_PARSER_USE_STD_TUPLE.html BOOST_PARSER_CONSTEXPR.html header/boost/parser/error_handling_hpp.html boost/parser/callback_error_handler.html boost/parser/rethrow_error_handler.html -boost/parser/write_formatted_m_idm22680.html -boost/parser/write_formatted_e_idm22706.html +boost/parser/write_formatted_m_idm30039.html +boost/parser/write_formatted_e_idm30065.html boost/parser/find_line_position.html boost/parser/find_line_end.html header/boost/parser/error_handling_fwd_hpp.html @@ -62,65 +63,40 @@ boost/parser/parse_error.html boost/parser/stream_error_handler.html boost/parser/error_handler_result.html boost/parser/diagnostic_kind.html -boost/parser/write_formatted_m_idm22965.html -boost/parser/write_formatted_e_idm22991.html +boost/parser/write_formatted_m_idm30324.html +boost/parser/write_formatted_e_idm30350.html header/boost/parser/parser_hpp.html -boost/parser/literals/operator_l_idm26070.html -boost/parser/literals/operator_l_idm26077.html -boost/parser/literals/operator_l_idm26084.html -boost/parser/literals/operator_l_idm26091.html -boost/parser/literals/operator_l_idm26100.html -boost/parser/literals/operator_l_idm26109.html -boost/parser/literals/operator_p_idm26118.html -boost/parser/literals/operator_p_idm26125.html -boost/parser/literals/operator_p_idm26132.html -boost/parser/literals/operator_p_idm26139.html -boost/parser/literals/operator_p_idm26148.html -boost/parser/literals/operator_p_idm26157.html -boost/parser/action_parser.html -boost/parser/attr_parser.html -boost/parser/bool_parser.html -boost/parser/callback_rule.html -boost/parser/char_parser.html -boost/parser/char_set_parser.html -boost/parser/char_subrange_parser.html +boost/parser/literals/operator_l_idm31631.html +boost/parser/literals/operator_l_idm31638.html +boost/parser/literals/operator_l_idm31645.html +boost/parser/literals/operator_l_idm31652.html +boost/parser/literals/operator_l_idm31661.html +boost/parser/literals/operator_l_idm31670.html +boost/parser/literals/operator_p_idm31679.html +boost/parser/literals/operator_p_idm31686.html +boost/parser/literals/operator_p_idm31693.html +boost/parser/literals/operator_p_idm31700.html +boost/parser/literals/operator_p_idm31709.html +boost/parser/literals/operator_p_idm31718.html +boost/parser/attribute.html boost/parser/delimited_seq_parser.html -boost/parser/digit_parser.html boost/parser/directive.html -boost/parser/eoi_parser.html -boost/parser/eps_parser.html -boost/parser/expect_parser.html -boost/parser/float_parser.html boost/parser/if_directive.html -boost/parser/int_parser.html -boost/parser/lexeme_parser.html boost/parser/merge_directive.html -boost/parser/no_case_parser.html boost/parser/none.html -boost/parser/omit_parser.html boost/parser/one_plus_parser.html boost/parser/opt_parser.html boost/parser/or_parser.html boost/parser/parser_interface.html -boost/parser/raw_parser.html +boost/parser/perm_parser.html +boost/parser/quoted_string_parser.html boost/parser/repeat_directive.html -boost/parser/repeat_parser.html -boost/parser/rule.html -boost/parser/rule_parser.html boost/parser/separate_directive.html -boost/parser/seq_parser.html boost/parser/skip_directive.html -boost/parser/skip_parser.html -boost/parser/string_parser.html -boost/parser/string_view_parser.html -boost/parser/switch_parser.html -boost/parser/symbol_parser.html boost/parser/symbols.html -boost/parser/uint_parser.html -boost/parser/ws_parser.html +boost/parser/transform_directive.html boost/parser/zero_plus_parser.html boost/parser/trace.html -boost/parser/container.html boost/parser/_p.html boost/parser/Inf.html boost/parser/omit.html @@ -136,6 +112,7 @@ boost/parser/eoi.html boost/parser/char_.html boost/parser/cp.html boost/parser/cu.html +boost/parser/quoted_string.html boost/parser/eol.html boost/parser/ws.html boost/parser/blank.html @@ -159,66 +136,94 @@ boost/parser/long_.html boost/parser/long_long.html boost/parser/float_.html boost/parser/double_.html -boost/parser/_val.html -boost/parser/_attr.html -boost/parser/_where.html -boost/parser/_begin.html -boost/parser/_end.html -boost/parser/_pass.html -boost/parser/_locals.html -boost/parser/_params.html -boost/parser/_globals.html -boost/parser/_error_handler.html -boost/parser/report_error_idm26612.html -boost/parser/report_warning_idm26624.html boost/parser/with_globals.html boost/parser/with_error_handler.html -boost/parser/repeat_idm26699.html -boost/parser/repeat_idm26717.html +boost/parser/repeat_idm32124.html +boost/parser/repeat_idm32142.html +boost/parser/transform.html boost/parser/attr.html -boost/parser/lit_idm26750.html -boost/parser/lit_idm26756.html -boost/parser/lit_idm26762.html +boost/parser/lit_idm32186.html +boost/parser/lit_idm32192.html +boost/parser/lit_idm32198.html boost/parser/string.html -boost/parser/lit_idm26783.html +boost/parser/lit_idm32214.html boost/parser/if_.html boost/parser/switch_.html -boost/parser/operator_idm26821.html -boost/parser/operator_idm26833.html -boost/parser/operator_idm26845.html -boost/parser/operator_idm26860.html -boost/parser/operator_idm26872.html -boost/parser/operator_idm26884.html -boost/parser/operator_idm26899.html -boost/parser/operator_idm26911.html -boost/parser/operator_idm26923.html -boost/parser/operator-_idm26938.html -boost/parser/operator-_idm26950.html -boost/parser/operator-_idm26962.html -boost/parser/operator%_idm26977.html -boost/parser/operator%_idm26989.html -boost/parser/operator%_idm27001.html -boost/parser/prefix_parse_idm27016.html -boost/parser/parse_idm27047.html -boost/parser/prefix_parse_idm27076.html -boost/parser/parse_idm27105.html -boost/parser/prefix_parse_idm27132.html -boost/parser/parse_idm27168.html -boost/parser/prefix_parse_idm27202.html -boost/parser/parse_idm27236.html -boost/parser/callback_prefix_p_idm27268.html -boost/parser/callback_parse_idm27307.html -boost/parser/callback_prefix_p_idm27344.html -boost/parser/callback_parse_idm27388.html +boost/parser/operator_idm32253.html +boost/parser/operator_idm32265.html +boost/parser/operator_idm32277.html +boost/parser/operator_idm32291.html +boost/parser/operator_idm32303.html +boost/parser/operator_idm32315.html +boost/parser/operator_idm32329.html +boost/parser/operator_idm32341.html +boost/parser/operator_idm32353.html +boost/parser/operator-_idm32367.html +boost/parser/operator-_idm32379.html +boost/parser/operator-_idm32391.html +boost/parser/operator%_idm32405.html +boost/parser/operator%_idm32417.html +boost/parser/operator%_idm32429.html +boost/parser/prefix_parse_idm32443.html +boost/parser/parse_idm32479.html +boost/parser/prefix_parse_idm32516.html +boost/parser/parse_idm32547.html +boost/parser/prefix_parse_idm32579.html +boost/parser/parse_idm32616.html +boost/parser/prefix_parse_idm32655.html +boost/parser/parse_idm32690.html +boost/parser/callback_prefix_p_idm32727.html +boost/parser/callback_parse_idm32767.html +boost/parser/callback_prefix_p_idm32809.html +boost/parser/callback_parse_idm32854.html BOOST_PARSER_DEFINE_RULES.html header/boost/parser/parser_fwd_hpp.html +boost/parser/action_parser.html +boost/parser/attr_parser.html +boost/parser/callback_rule.html +boost/parser/char_parser.html +boost/parser/char_set_parser.html +boost/parser/char_subrange_parser.html +boost/parser/eps_parser.html +boost/parser/expect_parser.html +boost/parser/float_parser.html +boost/parser/int_parser.html +boost/parser/lexeme_parser.html +boost/parser/no_case_parser.html +boost/parser/omit_parser.html +boost/parser/raw_parser.html +boost/parser/repeat_parser.html +boost/parser/rule.html +boost/parser/rule_parser.html +boost/parser/seq_parser.html +boost/parser/skip_parser.html boost/parser/sorted_t.html +boost/parser/string_parser.html +boost/parser/string_view_parser.html +boost/parser/switch_parser.html +boost/parser/symbol_parser.html +boost/parser/transform_parser.html +boost/parser/uint_parser.html +boost/parser/ws_parser.html boost/parser/null_sentinel_t.html +boost/parser/attribute_t.html boost/parser/enable_optional.html boost/parser/enable_variant.html boost/parser/sorted.html -boost/parser/report_error_idm27472.html -boost/parser/report_warning_idm27487.html +boost/parser/_val.html +boost/parser/_attr.html +boost/parser/_where.html +boost/parser/_begin.html +boost/parser/_end.html +boost/parser/_pass.html +boost/parser/_locals.html +boost/parser/_params.html +boost/parser/_globals.html +boost/parser/_error_handler.html +boost/parser/report_error_idm33376.html +boost/parser/report_error_idm33392.html +boost/parser/report_warning_idm33404.html +boost/parser/report_warning_idm33420.html header/boost/parser/replace_hpp.html boost/parser/replace_view.html boost/parser/replace_view/iterator.html @@ -229,10 +234,10 @@ boost/parser/search_all_view.html boost/parser/search_all_view/iterator.html boost/parser/search_all_view/sentinel.html boost/parser/search_all.html -boost/parser/search_idm27778.html -boost/parser/search_idm27807.html -boost/parser/search_idm27837.html -boost/parser/search_idm27861.html +boost/parser/search_idm33715.html +boost/parser/search_idm33743.html +boost/parser/search_idm33774.html +boost/parser/search_idm33797.html header/boost/parser/split_hpp.html boost/parser/split_view.html boost/parser/split_view/iterator.html @@ -254,7 +259,7 @@ boost/parser/transform_replace_view/iterator.html boost/parser/transform_replace_view/sentinel.html boost/parser/transform_replace.html header/boost/parser/tuple_hpp.html -boost/parser/literals/operator_c_idm28413.html +boost/parser/literals/operator_c_idm34395.html boost/parser/tuple.html boost/parser/integral_constant.html boost/parser/llong.html