Я изучал дизайн компилятора. Я прошел семестровый курс по этому вопросу в университете и читал Современный дизайн компилятора Грюна и др., Книга, кажется, защищает аннотированное абстрактное синтаксическое дерево в качестве промежуточного кода, и это то, что мы используется в курсе.
Мой вопрос заключается в том, каковы преимущества этого подхода по сравнению с созданием некоторого вида языка стековых машин или низкоуровневого псевдокода, особенно в отношении наличия компилятора, который может ориентироваться на многие машины.
Это хорошая идея - просто выберите уже существующее представление низкого уровня, такое как LLVM, и используйте его в качестве промежуточного представления?