2012-07-15 3 views
5

Я пытаюсь разработать компилятор на основе инфраструктуры LLVM. Мой язык имеет синтаксис типа C, поэтому я хотел бы использовать существующие компиляторы C. Сейчас я сосредоточен на интерфейсе (лексический анализ, синтаксический анализ), но я смущен тем, какой интерфейс лучше всего подходит. Clang, llvm-gcc или традиционные инструменты flex/bison?frontend to LLVM-based компилятор

Меня особенно интересует простейшее решение, которое позволит мне генерировать IR-код LLVM для последующих этапов моего компилятора.

+0

Если вы делаете свой собственный синтаксический и семантический анализ, генерирующий LLVM IR будет быть достаточно легким. Вы могли бы повторно использовать существующий интерфейс, например Clang, если бы вам пришлось брать большую часть синтаксиса C. В противном случае это не стоит, генерирование IR тривиально, как только вы получите действующий АСТ. –

+0

Спасибо. Что я должен использовать для генерирования IR из AST? –

+0

используйте простые правила подстановки - см. Пример LLVM Kaleidoscope. –

ответ

2

Если вы хотите, чтобы закодировать все вручную, то я Recommand вам LLVM учебник Калейдоскоп:

+0

Есть ли какой-то пример исходного кода? Мне легче понять источник, чем текст. – kravemir

+0

Ну, исходный код также приведен в учебнике: http://llvm.org/docs/tutorial/LangImpl8.html – Phong