2
0
mirror of https://github.com/boostorg/parser.git synced 2026-01-19 16:32:13 +00:00

1075 Commits

Author SHA1 Message Date
Zach Laine
3ebbd9e08c Correct an error in repeat_parser's choice of attribute. Sometimes it is
necessary to use the value_type of the container out-param, rather than the
attribute generated by the subparser.

Fixes #52.
2024-01-07 12:29:23 -06:00
Zach Laine
a6c4cb14b1 Introduce op% early, and use it instead of its long-form equivalent in the
rest of the docs.

Fixes #46.
2024-01-07 01:15:24 -06:00
Zach Laine
86cfa03dde Replace eplxicit max aggregate size of 50 with reference to
BOOST_PARSER_MAX_AGGREGATE_SIZE.

Partially addresses #51.
2024-01-07 01:15:22 -06:00
Zach Laine
9e374f8cc3 Flesh out support for parsing into non-sequence containers. 2024-01-07 00:44:21 -06:00
Zach Laine
6ab2a9b6a4 Fix the parsing of attributes into nested aggregate types.
Fixes #50.
2024-01-07 00:44:21 -06:00
Zach Laine
c7b9eb6eb5 Reimplement get() overloads as one publicly-facing function. 2024-01-06 14:21:07 -06:00
Zach Laine
e6cb3e4159 Add BOOST_PARSER_MAX_AGGREGATE_SIZE, to replace the hardcoded 50 in tuple.hpp.
Fixes #51.
2024-01-06 13:22:58 -06:00
Zach Laine
469b0b9615 Add info for standalone mode to README.md. 2024-01-06 13:11:45 -06:00
Zach Laine
6f06bc4189 Add no_case[] docs. 2024-01-06 02:36:26 -06:00
Zach Laine
aa1951aa89 Minimum MSVC 2017 -> 2019. 2024-01-06 02:36:26 -06:00
Zach Laine
2e4154dcba Cruft removal. 2024-01-06 02:36:26 -06:00
Zach Laine
1e373378bd Assert when an rvalue reference is detected in the char_parser::operator()
overlaod that takes a range, to prevent dangling references.
2024-01-06 01:17:32 -06:00
Zach Laine
7a98202845 Address TODO about not using sizeof() to detect char32_t/single-byte input
value type.
2024-01-06 01:01:48 -06:00
Zach Laine
f1190f6f59 Grooming. 2024-01-06 01:01:48 -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
0b7891d9cd Add a note to the "Parsing structs" section of the docs, indicating the
50-member limit on automatic use of structs as tuple.

Fixes #48.
2024-01-04 19:38:47 -06:00
Zach Laine
3b5ea8717c Lower the max number of supported struct elements from 100 to 50 so as not to
choke MSVC.
2024-01-04 19:26:47 -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
e10cc0619c Refactor detail::move_back() overloads to eliminate code duplication. 2024-01-04 17:58:57 -06:00
Zach Laine
e81035615b Fix MSVC builds -- std::array::begin() is not necessarily a pointer! 2024-01-04 08:53:06 -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
fcd3a9fc7d Gross hack to fix GCC < 12 builds.
Fixes #28.
2024-01-03 23:44:51 -06:00
Zach Laine
60cea9aa29 Fix broken docs.
Partially addresses #28.
2024-01-03 23:44:40 -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
0454d4dad0 Fix MSVC build. 2024-01-03 00:55:42 -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
e7daff5b26 Use std::move consistently when assigning/appending values. 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
009ad6fc69 Add a note to the entry for "ws" in the big table in "The Parsers and Their
Uses", indicating that it should be preferred over asci::space.

Partially addresses #34.
2024-01-01 18:53:21 -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
dced620290 Remove mooted TODO. 2024-01-01 15:29:45 -06:00
Zach Laine
27cf4b73ad Improve description of parse context. 2024-01-01 15:29:45 -06:00
Zach Laine
32b244aa3a Clean up uses of tuple template names in variaous parts of the docs. This
mostly amounts to replacing uses of boost::hana::tuple with more general
boost::parser::tuple where appropriate.
2024-01-01 15:29:45 -06:00
Zach Laine
2ec66193e1 Document, using links, the existence and semantics of Parser's tuple and get. 2024-01-01 15:29:45 -06:00
Zach Laine
c25982f1d2 In the intro, be very specific about what the __has_include-triggered
differences are.
2024-01-01 15:29:45 -06:00
Zach Laine
2fd5248be5 Remove stray uses of ascii::space.
Partially addresses #34.
2024-01-01 15:29:35 -06:00
Zach Laine
19f398907b Remove references to Boost.Preprocessor.
Applies to #32.
2023-12-30 21:04:31 -06:00
Zach Laine
e88d819122 Change the trivial_skipper example to use ws instead of ascii::space, and add
text to the tutorial to explain why this is a better choice.

Fixes #34.
2023-12-30 17:22:55 -06:00
Zach Laine
b02e9e32a6 Add preprocessor code from Boost.Describe instead of conditionally using
Boost.Preprocessor.  Thanks, Peter!

Fixes #32.
2023-12-30 17:00:23 -06:00
Zach Laine
38279949a4 Fix numerous doc typos. Guess I haven't run spellcheck in a while. 2023-12-30 16:24:08 -06:00
Zach Laine
f8fb63766e Fix aggr_tuple_assignment test for MSVC. 2023-12-30 15:24:04 -06:00
Zach Laine
3fee66b562 Doc typo.
Fixes #38.
2023-12-30 15:14:17 -06:00
sehe
b7d1d3dba5 Fix spelling of hexadecimal
The library and documentation misspells it (consistently, which is good
:)) as hexidecimal. That makes it hard for (new) users to find out by
searching documentation.

The fifteen spots fixed:

    example/callback_json.cpp|47 col 15| "four hexidecimal digits";
    example/callback_json.cpp|49 col 18| "\\uXXXX hexidecimal escape sequence";
    example/callback_json.cpp|51 col 38| escape_double_seq = "\\uXXXX hexidecimal escape sequence";
    example/json.cpp|57 col 28| // like "expected four hexidecimal digits here:", instead of "expected
    example/json.cpp|65 col 15| "four hexidecimal digits";
    example/json.cpp|67 col 18| "\\uXXXX hexidecimal escape sequence";
    example/json.cpp|69 col 38| escape_double_seq = "\\uXXXX hexidecimal escape sequence";
    example/json.cpp|158 col 18| // declare a hexidecimal parser that matches exactly 4.
    doc/tutorial.qbk|981 col 18| [ Matches a hexidecimal unsigned integral value. ]
    doc/tutorial.qbk|986 col 28| [ Matches exactly the hexidecimal unsigned integral value `_RES_np_(arg0)`. ]
    doc/tutorial.qbk|1118 col 42| So, if you wanted to parse exactly eight hexidecimal digits in a row in order
    doc/tutorial.qbk|2729 col 18| "\\uXXXX hexidecimal escape sequence";
    doc/tutorial.qbk|2731 col 38| escape_double_seq = "\\uXXXX hexidecimal escape sequence";
    doc/tutorial.qbk|2741 col 9| put a hexidecimal escape sequence there.
    include/boost/parser/parser.hpp|5622 col 13| /** The hexidecimal unsigned integer parser.  Produces an `unsigned int`

The one spot that was inconsistent (outside the gtest subtree):

    include/boost/parser/tuple.hpp|66 col 36| // 0xDEADBEEF (hexadecimal)
2023-12-30 15:13: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