Chcę użyć parsera rdzy (libsyntax) do przeanalizowania pliku Rust i wyodrębnienia z niego informacji, takich jak nazwy funkcji. Zacząłem drążyć dokument i kod, więc moim pierwszym celem jest program, który drukuje wszystkie nazwy funkcji wolnostojących funkcji w pliku .rs
.Jak sam używać parsera rdzy (libsyntax)?
Program powinien rozwinąć wszystkie makra zanim wypisze nazwy funkcji, więc funkcje zadeklarowane za pomocą makra nie zostaną pominięte. Dlatego nie mogę sam napisać jakiegoś małego parsera, żeby wykonać to zadanie.
Muszę przyznać, że nie jestem jeszcze perfekcyjnie dobry w programowaniu Rust, więc z góry przepraszam za wszelkie głupie stwierdzenia w tym pytaniu.
Jak mam rozumieć to trzeba wykonać następujące czynności:
- Przetwarza plik poprzez
Parser
struct - Rozwiń makra z
MacroExpander
- ???
- Użyj
Visitor
chodzić AST i wyodrębnić informacje potrzebne
Więc tutaj są moje pytania (np. Poprzez visit_fn
)
- Jak używać
MacroExpander
? - Jak przejść rozszerzoną tabelę AST z niestandardowym użytkownikiem?
Wpadłem na pomysł użycia custom lint check zamiast w pełni rozwiniętego parsera. Sprawdzam tę opcję.
Jeżeli sprawy, używam rustc 0.13.0-nightly (f168c12c5 2014-10-25 20:57:10 +0000)
Ekstrakcja ciekawych faktów zwykle wymaga dużo więcej niż „tylko parser” Zobacz mój artykuł na temat „Życie po parsowania "(google lub za pośrednictwem strony bio). –