Boost
arrow_drop_down
Boost.Parser
M
D

本次发布

T. Zachary Laine
作者
Zach Laine
Zach Laine
维护者
Rene Rivera
Rene Rivera
贡献者 - 新
Adem Budak
贡献者 - 新

依赖项

解析器

这是一个用于 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 依赖项。

功能

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

该库首次出现在 Boost 1.87.0 中。

Master 状态

Ubuntu

Fedora

Windows MSVC

macos-13 - Clang 14

Develop 状态

Ubuntu

Fedora

Windows MSVC

macos-13 - Clang 14

License

全部时间

necessarily-equal
贡献者