2
0
mirror of https://github.com/boostorg/parser.git synced 2026-01-19 04:22:13 +00:00
Zach Laine f55d3779de Define BOOST_PARSER_USE_CONCEPTS to be 1 when running Doxygen. This gets
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.
2024-03-08 21:19:37 -06:00
2023-12-02 02:05:53 -06:00
2024-03-08 21:19:36 -06:00
2024-01-04 02:40:33 -06:00
2019-10-27 15:36:41 -05:00
2024-03-08 21:19:36 -06:00

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:

example workflow

example workflow

example workflow

example workflow

example workflow

Develop status:

example workflow

example workflow

example workflow

example workflow

example workflow

License

Description
Mirrored via gitea-mirror
Readme 13 MiB
Languages
C++ 99%
CMake 0.5%
Python 0.3%