mirror of
https://github.com/boostorg/parser.git
synced 2026-01-22 05:22:32 +00:00
Compare commits
7 Commits
boost-1.87
...
boost-1.87
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f468d529fe | ||
|
|
b5d4339f2c | ||
|
|
6d7fa6f105 | ||
|
|
c975f57908 | ||
|
|
063291b78c | ||
|
|
3eb827dcd6 | ||
|
|
6d796287b6 |
@@ -22,12 +22,6 @@ target_link_libraries(boost_parser
|
||||
Boost::type_index
|
||||
)
|
||||
|
||||
if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
|
||||
|
||||
add_subdirectory(test)
|
||||
|
||||
endif()
|
||||
|
||||
else()
|
||||
|
||||
cmake_minimum_required(VERSION 3.14...3.20)
|
||||
|
||||
@@ -34,9 +34,9 @@ itself be used as a parser; it must be called. In the table below:
|
||||
|
||||
* `a` is a semantic action;
|
||||
|
||||
* `r` is an object whose type models `parsable_range`; and
|
||||
* `r` is an object whose type models `parsable_range`;
|
||||
|
||||
* `p`, `p1`, `p2`, ... are parsers.
|
||||
* `p`, `p1`, `p2`, ... are parsers; and
|
||||
|
||||
* `escapes` is a _symbols_t_ object, where `T` is `char` or `char32_t`.
|
||||
|
||||
|
||||
@@ -351,7 +351,7 @@ so this directive is only available in C++20 and later.
|
||||
|
||||
namespace bp = boost::parser;
|
||||
auto int_parser = bp::int_ % ','; // ATTR(int_parser) is std::vector<int>
|
||||
auto sv_parser = bp::string_view[int_parser]; // ATTR(subrange_parser) is a string_view
|
||||
auto sv_parser = bp::string_view[int_parser]; // ATTR(sv_parser) is a string_view
|
||||
|
||||
auto const str = std::string("1, 2, 3, 4, a, b, c");
|
||||
auto first = str.begin();
|
||||
|
||||
@@ -33,7 +33,7 @@ int main()
|
||||
std::cout << input << "\n";
|
||||
|
||||
//[ parsing_into_a_class_vec_of_strs
|
||||
constexpr auto uint_string = bp::uint_ >> bp::char_ >> bp::char_;
|
||||
constexpr auto uint_string = bp::uint_ >> +bp::char_;
|
||||
std::vector<std::string> vector_from_parse;
|
||||
if (parse(input, uint_string, bp::ws, vector_from_parse)) {
|
||||
std::cout << "That yields this vector of strings:\n";
|
||||
|
||||
@@ -31,9 +31,11 @@ namespace boost { namespace parser {
|
||||
std::forward_iterator<T> && code_unit<std::iter_value_t<T>>;
|
||||
|
||||
//[ parsable_range_like_concept
|
||||
//[ parsable_range_concept
|
||||
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>> &&
|
||||
|
||||
@@ -6201,8 +6201,11 @@ namespace boost { namespace parser {
|
||||
typename Parser::combining_groups>;
|
||||
using final_combining_groups = detail::
|
||||
combined_combining_t<combining_groups, parser_combining_groups>;
|
||||
using rhs_backtracking = decltype(detail::hl::prepend(
|
||||
detail::hl::drop_front(typename Parser::backtracking{}),
|
||||
std::bool_constant<AllowBacktracking>{}));
|
||||
using backtracking = decltype(detail::hl::concat(
|
||||
BacktrackingTuple{}, typename Parser::backtracking{}));
|
||||
BacktrackingTuple{}, rhs_backtracking{}));
|
||||
using parser_t = seq_parser<
|
||||
decltype(detail::hl::concat(parsers_, parser.parser_.parsers_)),
|
||||
backtracking,
|
||||
|
||||
10
index.html
Normal file
10
index.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Boost.Parser</title>
|
||||
<meta http-equiv="refresh" content="0; URL=../../doc/html/parser.html">
|
||||
</head>
|
||||
<body>
|
||||
Automatic redirection failed, please go to
|
||||
<a href="../../doc/html/parser.html">../../doc/html/parser.html</a>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user