mirror of
https://github.com/boostorg/parser.git
synced 2026-01-19 04:22:13 +00:00
f55d3779de751d140dae78e6ea953d71554a2785
concepts constraints on template parameters to show up. Also explicitly state requirements in the Doxygen strings for anything that adds constraints via requires clauses, since those do not show up in Doxygen. Fixes #109.
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 doubles separated by commas,
ignoring whitespace:
#include <boost/parser/parser.hpp>
#include <iostream>
#include <string>
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 a default dependency on Boost.Hana. The
Boost.Hana dependency can be eliminated, and std::tuple will be used instead
of boost::hana::tuple throughout the library, if you #define
BOOST_PARSER_DISABLE_HANA_TUPLE. To try out the lib without mseeing with
dependencies, add its include/ dir as an include path in your build and
define BOOST_PARSER_DISABLE_HANA_TUPLE your build.
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 targets submission to Boost.
Online docs: https://tzlaine.github.io/parser
Master status:
Develop status:
Description
Languages
C++
99%
CMake
0.5%
Python
0.3%