[#] [Перевод] Игрушечный фронтенд для LLVM, написанный на Rust: Руководство для начинающих
habrabot(difrex,1) — All
2017-10-09 09:30:06


**Примечание переводчика**

_Приведённый в статье код скомпилирован с достаточно старыми версиями крейтов peg и peg\_syntax\_ext. Для текущих версий в исходники нужно внести минимальные изменения. Я вставил изменённые участки в спойлеры по тексту статьи. Для сборки кода установите компилятор nightly Rust.
Полный исходник с моими правками можно скачать здесь:
_


В настоящее время я работаю над компилятором, который написан на Rust, и порождает LLVM IR. LLVM API выглядит немного пугающе для новичков, и по нему не так много руководств (и все они на C++, поэтому не вполне очевидно, как сделать то же самое на Rust). Я бы хотел, чтобы кто-то протянул мне руку помощи, когда я начинал всё это, и эта статья является тем, что я хотел бы показать самому себе в то время.

![][1]

В Rust наилучшая возможность взаимодействия с LLVM — через крейт llvm-sys. Один добрый человек разместил документацию к нему [здесь][2]. Конечно, вам следует также изучить [руководство][3] по LLVM, так как оно поможет вам понять, как LLVM “думает”. Этот пост, в основном, является переводом на Rust подмножества из этого руководства.

Полный исходный код для этого руководства находится [здесь][4].
[Читать дальше →][5]

[1]: https://habrastorage.org/web/91b/abc/cfb/91babccfb6604110bad66cfc1d5819ed.jpg
[2]: http://rustdoc.taricorp.net/llvm-sys/llvm_sys/
[3]: https://habrahabr.ru/post/119850/
[4]: https://github.com/ucarion/llvm-rust-getting-started
[5]: https://habrahabr.ru/post/338420/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut