7个不稳定版本 (3个重大更改)
0.4.3 | 2023年9月27日 |
---|---|
0.4.2 | 2023年9月27日 |
0.3.0 | 2023年9月26日 |
0.2.0 | 2023年9月26日 |
0.1.0 | 2023年9月26日 |
#38 in #strategy
每月41次下载
用于 pest_tree
49KB
1K SLoC
Pest Tree
使用宏将动态类型的pest树转换为静态类型的替代方案 pest_ast
此文档目前未完成,部分内容可能已过时。如有任何问题,请直接在GitHub issues中提问!
目标
- 直观
- 明确
- 易于初学者学习
非目标
- 快速
- 适用于所有情况
- 支持定制
此crate围绕可以派生的特质 PestTree
展开,该特质适用于Struct和Enum。
选项
基本
名称 | 参数 | 目的 |
---|---|---|
strategy(...) | 一个 strategy ,例如 Direct 或 Sequential |
指定结构体/枚举的匹配策略。 |
require(...) | 一个 Requirement ,例如 Rule(...) |
定义结构体规则/策略未涵盖的要求。 |
convert(...) | 一个 Converter ,例如 auto |
将 Pairs 转换为结构体中的 i32 |
策略
名称 | 参数 | 目的 |
---|---|---|
Direct |
None | 匹配类似于 in 、let 等的标记。 |
Sequential |
None | 匹配一系列标记,例如 let a = 3; |
要求
名称 | 参数 | 目的 |
---|---|---|
rule(...) |
由 pest_derive 生成的 Rule 枚举变体 |
确认 Pairs 匹配规则。此要求应在大多数如果不在所有结构体/枚举中使用 |
validate(...) |
闭包或函数,接受一个 Pair ,如果输入被接受则返回 true |
根据自定义条件进行匹配。 |
任何(...) |
两个或更多 Requirement 。 |
只有当 or(...) 中的一个匹配时,才会接受。对于 and(...) 这样的功能,只需使用多个 require 属性即可。 |
转换
名称 | 参数 | 目的 |
---|---|---|
custom_p(...) |
闭包或函数,接收一个 Pair 并输出应转换到的类型。 |
将标记转换为自定义类型。 |
custom_s(...) |
闭包或函数,接受一个 &str ,如果输入被接受则返回 true |
将标记转换为自定义类型。 |
auto |
None | 自动将 pair 转换为基本类型之一(pest_tree 将根据您的结构体成员声明确定类型)。 |
chain(...) |
按顺序链式连接多个函数。 | 链式连接将对转换对为自定义类型的函数。 |
PestTree 需要辅助属性来确定如何解析树。有关如何使用它们的示例,请参阅示例文件夹。
依赖关系
~1–1.5MB
~33K SLoC