MCPcopy Create free account
hub / github.com/boostorg/parser / main

Function main

test/merge_separate.cpp:16–651  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14using namespace boost::parser;
15
16int main()
17{
18
19// merge_
20{
21 {
22 constexpr auto parser = merge[char_ >> ' ' >> char_];
23
24 static_assert(
25 std::is_same_v<decltype(parse("", parser)), std::optional<char>>);
26
27 {
28 auto result = parse("a b", parser);
29 BOOST_TEST(result);
30 BOOST_TEST(*result == 'b');
31 }
32 }
33 {
34 constexpr auto parser = char_ >> merge[char_ >> char_] >> char_;
35
36 static_assert(std::is_same_v<
37 decltype(parse("", parser)),
38 std::optional<tuple<char, char, char>>>);
39
40 {
41 BOOST_TEST(!parse("ab", parser));
42 BOOST_TEST(!parse("abc", parser));
43 auto result = parse("abcd", parser);
44 BOOST_TEST(result);
45 BOOST_TEST(*result == detail::hl::make_tuple('a', 'c', 'd'));
46 }
47 }
48 {
49 constexpr auto parser = char_ >> merge[eps >> char_ >> char_] >> char_;
50
51 static_assert(std::is_same_v<
52 decltype(parse("", parser)),
53 std::optional<tuple<char, char, char>>>);
54
55 {
56 BOOST_TEST(!parse("ab", parser));
57 BOOST_TEST(!parse("abc", parser));
58 auto result = parse("abcd", parser);
59 BOOST_TEST(result);
60 BOOST_TEST(*result == detail::hl::make_tuple('a', 'c', 'd'));
61 }
62 }
63 {
64 constexpr auto parser = eps >> merge[eps >> char_ >> char_] >> char_;
65
66 static_assert(std::is_same_v<
67 decltype(parse("", parser)),
68 std::optional<tuple<char, char>>>);
69
70 {
71 BOOST_TEST(!parse("ab", parser));
72 auto result = parse("abc", parser);
73 BOOST_TEST(result);

Callers

nothing calls this directly

Calls 3

make_tupleFunction · 0.85
parseFunction · 0.50
stringClass · 0.50

Tested by

no test coverage detected