Привет! Есть вопрос: в процессе сборки в чем преимущество LLVMовского подхода через промежуточный IL над AST?
Я пока у себя делаю так: исходники преобразую в AST-«объектники», затем уже собираю итоговое AST представление программы и компилю в LLVM IR, дабы свой бэк не писать. Но в принципе возможно и сразу брать AST и по нему уже генерить конечный бинарь.
P.S. Свой ЯП скорее лично-исследовательский проект, но с прицелом на использование в bare-metal проектах.
Ничего не мешает генерить прямо из ast-а или какого-то иного верхнеуровнего представления. Но общий IR удобен для портабельности на разные яп и таргеты; условно, 10 поддерживаемых языков = 10 различных AST = 10 генераторов машинного кода