Boost
arrow_drop_down
Boost.Parser
M
D

本次发布

T. Zachary Laine
作者
Zach Laine
Zach Laine
维护者
ivanpanch
贡献者 - 新
Andreas Buhr
贡献者 - 新

依赖项

解析器

这是一个用于 C++ 的解析器组合器库。作为一个快速的示例,下面是一个完整的程序,它解析一个或多个由逗号分隔的 double 值,并忽略空格。

#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";
    }
}

该库默认是纯头文件,并且没有 Boost 依赖项。

功能

  • 用于解析各种事物的解析器。
  • 组合操作,这些操作可以将复杂的解析器组合成更简单的解析器。
  • 多种从解析中提取数据的方式,包括通过回调。
  • 哨兵和范围友好。
  • 对 Unicode 非常友好。
  • 出色的错误报告,通过类似 GCC 和 Clang 生成的诊断信息。
  • 用于调试解析器的跟踪支持。
  • 巧妙的技巧,使编译时错误更容易处理。(这些是完全可选的。)

该库首次出现在 Boost 1.87.0 中。

主分支状态

Ubuntu

Fedora

Windows MSVC

macos-13 - Clang 14

开发分支状态

Ubuntu

Fedora

Windows MSVC

macos-13 - Clang 14

License

全部时间

Rene Rivera
Rene Rivera
贡献者
necessarily-equal
贡献者
Adem Budak
贡献者