https://github.com/boostorg/parser
A C++ parser combinator library.
https://github.com/boostorg/parser
Last synced: 9 months ago
JSON representation
A C++ parser combinator library.
- Host: GitHub
- URL: https://github.com/boostorg/parser
- Owner: boostorg
- License: bsl-1.0
- Created: 2020-08-29T00:08:02.000Z (over 5 years ago)
- Default Branch: develop
- Last Pushed: 2025-03-15T16:57:49.000Z (10 months ago)
- Last Synced: 2025-03-29T02:02:59.135Z (10 months ago)
- Language: C++
- Size: 11.8 MB
- Stars: 126
- Watchers: 4
- Forks: 17
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE_1_0.txt
Awesome Lists containing this project
README
# parser
This is a parser combinator library for C++. As a quick example of use, here
is a complete program that parses one or more `double`s separated by commas,
ignoring whitespace:
```c++
#include
#include
#include
namespace bp = boost::parser;
int main()
{
std::cout << "Enter a list of doubles, separated by commas. No pressure. ";
std::string input;
std::getline(std::cin, input);
auto const result = bp::parse(
input, bp::double_ >> *(',' >> bp::double_), bp::ws);
if (result) {
std::cout << "Great! It looks like you entered:\n";
for (double x : *result) {
std::cout << x << "\n";
}
} else {
std::cout
<< "Good job! Please proceed to the recovery annex for cake.\n";
}
}
```
This library is header-only, and has no Boost dependencies by default.
Features:
- Parsers that parse a variety of things.
- Combining operations that make complex parsers out of simpler ones.
- Multiple ways of getting data out of the parse, including via callbacks.
- Sentinel- and range-friendly.
- Very Unicode friendliness.
- Excellent error reporting, via diagnostics like those produced by GCC and Clang.
- Trace support for debugging your parsers.
- Clever hacks to make compile time errors easier to deal with. (These are totally optional.)
This library first appeared in Boost 1.87.0
Master status:
[](https://github.com/tzlaine/parser/actions/workflows/ubuntu.yml)
[](https://github.com/tzlaine/parser/actions/workflows/fedora.yml)
[](https://github.com/tzlaine/parser/actions/workflows/windows.yml)
[](https://github.com/tzlaine/parser/actions/workflows/macos-13.yml)
Develop status:
[](https://github.com/tzlaine/parser/actions/workflows/ubuntu.yml)
[](https://github.com/tzlaine/parser/actions/workflows/fedora.yml)
[](https://github.com/tzlaine/parser/actions/workflows/windows.yml)
[](https://github.com/tzlaine/parser/actions/workflows/macos-13.yml)
[](LICENSE_1_0.txt)