#[derive(TypedTree)]
{
// Attributes available to this derive:
#[grammar]
}
Expand description
Generates helper structs for type-safe AST handling.
§Structs
For each rule pest-typed-tree
will generate struct.
E.g. foo_rule
-> FooRule
, and so on.
This struct is wrapper for pest Pair
for which
as_rule() == foo_rule holds.
You can create this struct using new() constructor, and get underlying
pair or text.
§Typed getters
pest-typed-tree
will generate getters that return child nodes in AST.
Consider following pest grammar:
foo = ...
bar = ...
baz = {foo ~ bar?}
Following APIs will be generated:
ⓘ
impl Baz {
fn get_foo(&self) -> Foo;
fn get_bar(&self) -> Option<Bar>;
}
§Converting to enum
If rule is just choice of several unique rules, pest-typed-tree
will
generate to_enum
function that returns enum with actual AST child.
For following grammar:
foo = ...
bar = ...
baz = ...
quux = {foo | bar | baz}
Following API will be available
ⓘ
enum QuuxChildren {
Foo(Foo),
Bar(Bar),
Baz(Baz),
}
impl Quux {
fn to_enum(&self) -> QuuxChildren;
}
See test complex.rs
for typed getters and enum conversion usage examples.