7 unstable releases (3 breaking)
0.4.3 | Sep 27, 2023 |
---|---|
0.4.2 | Sep 27, 2023 |
0.3.0 | Sep 26, 2023 |
0.2.0 | Sep 26, 2023 |
0.1.0 | Sep 26, 2023 |
#38 in #strategy
41 downloads per month
Used in pest_tree
49KB
1K
SLoC
Pest Tree
An alternative to pest_ast
for converting dynamically typed pest trees into statically typed ones, using macros
This documentation is currently unfinished and some may be outdated. Feel free to directly ask in github issues if you have any problems!
Goals
- Intuitive
- Explicit
- Easy to learn for beginners
Non-goals
- Fast
- Works for every case
- customization support
This crate revolves around the trait PestTree
which can be derived for Structs and Enums.
Options
Basic
Name | Parameters | Purpose |
---|---|---|
strategy(...) | A strategy , such as Direct or Sequential |
Specify a matcher strategy for the struct/enum. |
require(...) | A Requirement , such as Rule(...) |
Define requirements not covered by the struct's rules/strategy. |
convert(...) | A Converter , such as auto |
Convert the Pairs into something like an i32 in a struct |
Strategy
Name | Parameters | Purpose |
---|---|---|
Direct |
None | Match tokens like in , let , etc. |
Sequential |
None | Match a series of tokens, such as let a = 3; |
Requirement
Name | Parameters | Purpose |
---|---|---|
rule(...) |
A Rule enum variant generated by pest_derive |
Confirm that the Pairs matches a rule. This requirement should be used in most if not all structs/enums |
validate(...) |
A closure or a function that accepts a Pair and returns true if the input is accepted |
Match based on custom conditions. |
any(...) |
Two or more Requirement s |
Only 1 requirement in or(...) have to match for it to be accepted. For functionality like and(...) , just use multiple require attributes |
Convert
Name | Parameters | Purpose |
---|---|---|
custom_p(...) |
A closure or a function that takes a Pair and outputs the type it should convert to. |
Convert tokens into custom types. |
custom_s(...) |
A closure or a function that accepts a &str and returns true if the input is accepted |
Convert tokens into custom types. |
auto |
None | Automatically convert the pair into one of the basic types (pest_tree will determine the type based on your struct member declaration) |
chain(...) |
Chain many functions together in sequence | Chain functions that convert from a pair into a custom type |
PestTree needs helper attributes to determine how the tree can be parsed. For examples on how they can be used, check the examples folder.
Dependencies
~1–1.5MB
~33K SLoC