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日

#386过程宏

每月下载 31次

MIT 许可证

40KB
798

害虫树

将动态类型 pest 树转换为静态类型树的一种替代方案,使用宏实现

此文档目前尚未完成,其中一些可能已过时。如果您有任何问题,请直接在GitHub issues中提问!

目标

  • 直观
  • 明确
  • 易于初学者学习

非目标

  • 快速
  • 适用于所有情况
  • 自定义支持

此crate围绕 PestTree 特征构建,可以为结构体和枚举派生。

选项

基本

名称 参数 用途
strategy(...) 一个 strategy,例如 DirectSequential 指定结构体/枚举的匹配策略。
require(...) 一个 Requirement,例如 Rule(...) 定义结构体规则/策略未涵盖的要求。
convert(...) 一个 Converter,例如 auto Pairs 转换为结构体中的类似 i32

策略

名称 参数 用途
直接 匹配像 inlet 等标记。
顺序 匹配一系列标记,例如 let a = 3;

要求

名称 参数 用途
规则(...) pest_derive 生成的 Rule 枚举变体 确认 Pairs 是否匹配规则。这个要求应该在大多数(如果不是所有)结构体/枚举中使用
验证(...) 一个闭包或接受 Pair 并返回 true(如果输入被接受)的函数 根据自定义条件进行匹配。
任何(...) 两个或更多 需求 只需在 (...) 中匹配 1 个需求即可接受。对于类似 (...) 的功能,只需使用多个 require 属性

转换

名称 参数 用途
custom_p(...) 一个闭包或函数,它接受一个 Pair 并输出它应该转换到的类型。 将标记转换为自定义类型。
custom_s(...) 一个闭包或函数,它接受一个 &str 并在输入被接受时返回 true 将标记转换为自定义类型。
auto 自动将 pair 转换为基本类型之一(pest_tree 将根据您的结构体成员声明确定类型)
chain(...) 按顺序链式连接许多函数 链式连接将一对转换为自定义类型的函数




PestTree 需要辅助属性来确定如何解析树。有关它们如何使用的示例,请查看示例文件夹。


lib.rs:

一种简单的方法,将您的动态 [pest] 树转换为由结构和枚举构建的 AST。

此 crate 以 pest_tree_derive::PestTree derive 宏为中心。该宏使用 pest_tree 属性宏来帮助为相关结构体/枚举推导出 pest_tree_derive::PestTree 特性。

依赖项

~4MB
~77K SLoC