Boost C++ 库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码标准

PrevUpHomeNext

第 21 章。 Boost.Metaparse

Abel Sinkovics

在 Boost 软件许可 1.0 版本下发布。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)

目录

描述
相关出版物和博客
前言
描述
范围
使用此库的优势
使用 Metaparse 的成本
支持的平台
Boost.Metaparse 入门
1. 简介
2. 要解析的文本
3. 创建一个简单的解析器
4. 解析简单的表达式
5. 解析更长的表达式
6. 添加对其他运算符的支持
7. 处理优先级
8. 处理结合性
9. 处理一元运算符
10. 处理括号
11. 处理无效输入
12. 总结
方便复制粘贴的代码示例
每节之前的定义
用户手册
什么是解析器
基于 constexpr 的解析
可以使用哪些类型的语法?
版本控制
模板类
性能
BOOST_METAPARSE_STRING 的基准测试
测量 printf
进一步的测量
库的设计
设计原理
参考
库提供的解析器和组合器
编译时数据结构和值
字符串
错误
标签
实用程序
库中使用的术语
按字母顺序

Metaparse 是一个用于模板元程序的解析器生成器库。此库的目的是支持创建在编译时解析的解析器。此库旨在用于为 C++ 创建嵌入式领域特定语言。生成的解析器的输入是一个编译时字符串,请参阅 string。解析过程的结果要么是错误,要么是解析器编写者指定的任何其他结果。

该库类似于 Boost.Spirit,但是虽然用 Spirit 构建的解析器在运行时解析,但用 Metaparse 构建的解析器在编译时解析。用 Metaparse 构建的解析器可以输出

  • 类型
  • 常数值
  • 对象(具有公共静态成员的类型)
  • 可调用的 C++ 函数(具有公共静态方法的类型)
  • 模板元函数类

有关更多详细信息,请参阅“可以从编译时字符串构建什么?”部分。

基于 C++11 功能,该库可以提供用于定义输入字符串的高级实用程序,该库的其余部分也适用于基于 C++98 的编译器。请注意,如果您使用 GCC 或 Clang 通过 Boost.Build 构建测试和示例,则编译器将不会启用 C++11(或更高版本)。要在 C++11 模式下构建测试和示例,您需要运行 b2 cxxflags="-std=c++11"

外部教程可以在 https://github.com/sabel83/metaparse_tutorial#metaparse-tutorial 找到


PrevUpHomeNext