Zach Laine
6ab2a9b6a4
Fix the parsing of attributes into nested aggregate types.
...
Fixes #50 .
2024-01-07 00:44:21 -06:00
Zach Laine
6f06bc4189
Add no_case[] docs.
2024-01-06 02:36:26 -06:00
Zach Laine
2b0053bf83
Add no_case[] directive, and associated changes to char, string, and boolean
...
parsers to make it work; uses the recently-added Unicode case-folding
operation. Needs docs.
Fixes #44 .
2024-01-06 01:01:48 -06:00
Zach Laine
f34f096c66
Add logic to repeat_parser analogous to the logic in seq_parser, to enable
...
implicit tuple <-> struct conversions.
Fixes #47 .
2024-01-04 18:38:44 -06:00
Zach Laine
c37274c9a5
Fix broken build.
2024-01-04 02:40:33 -06:00
Zach Laine
d0fe18b61d
Add single-code point Unicode case folding function; data and tests are
...
generated from CaseFolding.txt.
Partially addressed #44 .
2024-01-04 02:26:36 -06:00
Zach Laine
d60d33e40b
Finish implementing support for parsing into structs as if they were tuples.
...
This makes it possible to map from sequence parsers onto structs with no
semantic actions. Also, add a doc section describing how parsing structs
works (including a couple of short example programs).
Fixes #45 .
Partially addresses #28 .
2024-01-03 23:24:37 -06:00
Zach Laine
7921f15ef8
Cruft removal.
2024-01-03 16:55:13 -06:00
Zach Laine
8bad1f2963
detail::aggregate_to_tuple() -> detail::tie_aggregate(), and change
...
detail::tie_aggregate() to return a tuple of references.
Partially addresses #28 .
2024-01-03 02:28:10 -06:00
Zach Laine
0e78ea2d26
Remove the T >> T -> std::vector<T> attribute combining rule from seq_parser.
2024-01-03 02:04:04 -06:00
Zach Laine
7883b8ed1e
Update docs to reflect the new detail::sequence_of<T> semantics (std::string
...
for sequence of char, std::vector<T> for everything else). Also, update one
of the examples to match the associated test code.
Partially addresses #36 .
2024-01-03 01:37:07 -06:00
Zach Laine
f08255cf94
Use a tuple instead of a pair in seq_parser::{make_temp_result,combine}. Add a
...
third tuple to the output of make_temp_result; this tuple is true/false values
indicating whether this parser's attribute was merged with an adjacent
parser's container of attributes of the same type.
Fixes #36 .
2024-01-02 17:58:03 -06:00
Zach Laine
2020e44fda
Radically change the way that repeat_parser generates a sequence of
...
attributes. It now produces std::string when Attribute is char, and
std::vector<Attribute> otherwise (except for nope special-casing of course).
Partial fix for #36 .
2024-01-02 17:57:46 -06:00
Zach Laine
24d18b4eaf
Remove the documentation section "An Odd Case", which was obviated by the
...
previous commit. Also remove the test cases that exercised that case.
2024-01-01 15:30:45 -06:00
Zach Laine
d34d4b7e6a
Remove the seq_parser C<T> >> C<T> -> C<T> collapsing rule. Add special logic
...
for recursive rules to make accumulating recursive parsers like
recursive_string_rule in the parser_rule test easier to write.
2024-01-01 15:29:45 -06:00
Zach Laine
f8fb63766e
Fix aggr_tuple_assignment test for MSVC.
2023-12-30 15:24:04 -06:00
Zach Laine
fcb435df99
Add test for the struct <-> tuple assignment machinery; fix errors.
...
Partially addresses #28 .
2023-12-30 04:12:05 -06:00
Zach Laine
88a965d9c5
Rename the {callback_,}parse() overloads that take an iterator/sentinel pair
...
to {callback,}prefix_parse().
Fixes #21 .
2023-12-23 04:05:54 -06:00
Zach Laine
1bbad0a871
Address TODOs about the need to document an unexpected aspect of how out-param
...
attributes are assigned.
2023-12-16 16:37:06 -06:00
Zach Laine
449a964b23
Publicize the as_utfN and utfN_view templates/aliases in boost::parser, so
...
users can use them to drive Unicode-aware parsing.
Fixes #23 .
2023-12-15 22:35:28 -06:00
Zach Laine
efaa7c8c08
Replace the half-assed subrange implementation in boost::parser with the more
...
robust one from boost::text.
Fixes #26 .
2023-12-15 21:23:31 -06:00
Zach Laine
ef3c90b552
view -> subrange
...
Fixes #20 .
2023-12-03 16:54:44 -06:00
Zach Laine
a33883d59b
symbols::add -> symbols::insert_for_next_parse
...
Fixes #19 .
2023-12-03 16:33:42 -06:00
Zach Laine
8f560956c4
Change the assumption in parser.hpp that a code point is a uint32_t; use
...
char32_t instead.
Fixes #18 .
Fixes #22 .
2023-12-03 16:10:25 -06:00
Zach Laine
72e5573505
Replace use of is_integral with parsable_code_unit, which is all the character
...
types. Also slightly simplify the logic for parsable_code_unit.
Fixes #22 .
2023-12-03 15:20:40 -06:00
Zach Laine
876056aa28
uint32_t -> char32_t in transcode_iterator.
2023-12-03 14:19:08 -06:00
Zach Laine
362542d688
Remove the char8_t-specific public concepts, and simplify code that was
...
previously the downstream use of those public concepts.
2023-12-03 13:40:50 -06:00
Zach Laine
ffe3c522b5
Change the concepts for utf{8,32}_code_unit to be char/char8_t and
...
wchar_t/char32_t, respectively. Obvs, the wchar_t bit only applies to
non-MSVC.
2023-12-02 14:19:57 -06:00
Zach Laine
fb47fdc0f1
Make the configury simpler:
...
- Remove BOOST_PARSER_STANDALONE, and make that the default. The bits of
Boost that we might use are used automatically when they're available (as
discovered via __has_include).
- Remove the non-essential uses of Boost from the examples.
2023-12-02 02:05:53 -06:00
Zach Laine
e9893e7979
C++17 Clang warning mitigation.
2023-11-25 17:25:18 -06:00
Zach Laine
2de63708cc
Update Boost.Text to 1ff99f926f.
2022-08-21 18:32:05 -05:00
Zach Laine
c437e98985
Fix int literal/long long literal confusion in parser_api.cpp tst.
2022-04-10 22:12:04 -05:00
Zach Laine
65b9020ed4
Add missing include.
2022-04-08 17:47:40 -05:00
Zach Laine
095aa362d7
Fix Clang builds.
2020-09-21 17:11:25 -05:00
Zach Laine
25b99b53cd
Change the CMake build mode when BUILD_WITHOUT_BOOST is defined not to find
...
nor include Boost at all. Fix several problems that this brought out.
2020-09-20 17:32:23 -05:00
Zach Laine
895224b214
Convert from Boost.Hana to Hana lite, part 5: Make some small adjustments to
...
the tests to get them building when Hana is not used; disable building the
examples when Boost.Hana is not in use, so that they can keep using the much
nicer hana::tuple::operator[] instead of parser::get().
This completes the changes to make Hana optional.
2020-09-20 17:05:57 -05:00
Zach Laine
71c697d23d
Convert from Boost.Hana to Hana lite, part 2: introduce a template aliases for
...
constants like llong; provide a tuple accessor get(); use these throughout the
code.
Also, adapt the code in detail/hl.hpp to work with hana::tuple and std::tuple.
2020-09-20 16:05:52 -05:00
Zach Laine
c1205a419d
Convert from Boost.Hana to Hana lite, part 1: introduce a template alias for
...
tuple, and use it throughout the code.
2020-09-20 14:07:49 -05:00
Zach Laine
df8d20838e
Create Boost.Hana lite.
2020-09-20 12:46:01 -05:00
Zach Laine
969de5c23d
Move all the text and stl_interface internal header code into
...
boost::parser::detail namespace.
2020-09-20 03:23:23 -05:00
Zach Laine
5bed6f9776
Make dependency on Boost.Preprocessor optional.
2020-09-19 21:37:45 -05:00
Zach Laine
113270d6f6
Remove dependency on Boost.Any.
2020-09-19 20:43:12 -05:00
Zach Laine
1ed37641e9
Remove dependency on the Spirit headers, via extensive copy/pasta.
2020-09-19 19:55:52 -05:00
Zach Laine
b88e33cc88
Fix narrowing conversion error.
2020-09-10 00:15:42 -05:00
Zach Laine
d8a323a5fb
Fix VC2019 test failures.
2020-09-09 23:42:04 -05:00
Zach Laine
3ac30663b4
Add support for C++17.
2020-09-09 02:45:19 -05:00
Zach Laine
93f4ab246a
Add an empty-input test that covers every parser.
...
Fixes #1 .
2020-09-09 02:45:17 -05:00
Zach Laine
32ebd38270
Exercise the sentinel code path for every parser; fix errors.
...
Fixes #3 .
2020-09-09 02:45:17 -05:00
Zach Laine
19d441743a
Fix the constraints on {callback_,}parse() when called with a pointer to a
...
null-terminated string.
2020-09-09 02:45:15 -05:00
Zach Laine
322bb32b2b
Warning mitigation.
2020-09-06 14:44:49 -05:00