Skip to content

d5ch4k/parser

 
 

Repository files navigation

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 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:

Ubuntu

Fedora

Windows MSVC

macos-13 - Clang 14

Develop status:

Ubuntu

Fedora

Windows MSVC

macos-13 - Clang 14

License

About

A C++ parser combinator library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 98.9%
  • CMake 0.5%
  • Python 0.3%
  • Starlark 0.2%
  • Shell 0.1%
  • Batchfile 0.0%