ezno-parser-visitable-derive

Crates.ioezno-parser-visitable-derive
lib.rsezno-parser-visitable-derive
version0.0.9
sourcesrc
created_at2023-02-25 17:39:44.250577
updated_at2024-11-13 19:50:40.370135
descriptionDerives 'Visitable' trait for Ezno AST
homepage
repositoryhttps://github.com/kaleidawave/ezno
max_upload_size
id794454
size7,796
Ben (kaleidawave)

documentation

README

visiting-proc-macro lines of code

A package which generates mutable and immutable visiting implementations for AST nodes.

A visitor is a implementor a trait of which the a function is called of a each node.

This module is specific for the parser module and contains the ability to extend with data.

Usage

use visitable_derive::Visitable;

#[derive(Visitable)]
struct MyAstNode {
	...
}

Attributes

visit_self

Will visit all fields first then self

#[derive(Visitable)]
#[visit_self]
struct MyAstNode {
	...
}

Options:

  • also_visit_first_if Will visit self additionally before if predicate is true
#[derive(Visitable)]
#[visit_self(also_visit_first_if="self.predicate()"]
struct MyAstNode {
	...
}

impl MyAstNode {
	fn predicate(&self) -> bool {
		...
	}
}

visit_skip_field

Skips visiting the field. Used if type does not implement Visitable

#[derive(Visitable)]
struct MyAstNode {
	#[visit_skip_field]
	a: String
}
Commit count: 201

cargo fmt