Я хочу использовать парсер Rust (libsyntax), чтобы разобрать файл Rust и извлечь из него информацию, такую как имена функций. Я начал копать в документах и коде, поэтому моя первая цель - это программа, которая печатает все имена функций автономных функций в файле .rs
.Как использовать парсер Rust (libsyntax) самостоятельно?
Программа должна расширять все макросы, прежде чем печатает имена функций, поэтому функции, объявленные с помощью макроса, не пропущены. Вот почему я не могу написать какой-то дрянной маленький парсер сам, чтобы выполнить эту работу.
Должен признать, что я еще не совсем хорошо разбираюсь в Rust, поэтому заранее извиняюсь за любые глупые заявления в этом вопросе.
Как я понял, что нужно сделать следующие шаги:
- Разбирает файл Развернуть макросы с
MacroExpander
- через
Parser
struct - ???
- Используйте
Visitor
ходить AST и извлекать информацию, мне нужно
Так вот мои вопросы (например, с помощью visit_fn
.):
- Как использовать
MacroExpander
? - Как мне пройти расширенный АСТ с помощью посетителя?
У меня возникла идея использовать custom lint check вместо полноценного парсера. Я изучаю этот вариант.
Если это имеет значение, я использую rustc 0.13.0-nightly (f168c12c5 2014-10-25 20:57:10 +0000)
Extraction интересных фактов, как правило, требует много больше, чем «просто парсер» См мою статью «Жизнь после Парсинга "(google или через биографию). –