LINUX.ORG.RU

Rust compiler plugins

 , ,


0

4

Кто-нибудь имел дело с кодогенерацией средствами libsyntax или syntex?
Поделитесь источниками откуда брать примеры и объяснения как генерировать растовский AST. Я нашел только syntax extensions, но это не совсем то.
Застрял на создании структуры и имплементации интерфейса к ней.
Должно же быть хоть что-то кроме автогенеренной документации по сигнатурам функций libsyntax.

Есть ли простой способ кодогенерации через linsyntax а-ля syntax-macro-way?

★★★★★

Последнее исправление: mersinvald (всего исправлений: 1)

Вот что мне ответили на Reddit в /r/rust на аналогичный вопрос:

https://doc.rust-lang.org/nightly/book/compiler-plugins.html
Автогенеренная документация к API: http://manishearth.github.io/rust-internals-docs/syntax/

Вообще, люди, которые работают с этим — разработчики компилятора (и serde/clippy) и поддержка документации к нестабильным фичам это такое. Так что хороших доков нет.
Кроме того, есть новая, стабильная макро-система, так что этот API в любом случае устареет.
С помощью quote_foo! макроса можно довольно много накодогенерить.

Вот пара примеров плагинов, которые могут вас заинтересовать (последний может не компилироваться на nightly):
https://github.com/servo/servo/blob/master/components/plugins/reflector.rs
https://github.com/servo/servo/blob/master/components/plugins/jstraceable.rs
https://github.com/Manishearth/rust-adorn/blob/master/src/lib.rs#L21

Вольный перевод.

mersinvald ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.