Плюсы и минусы графического и линейного промежуточного представления в дизайне компилятора? - PullRequest
0 голосов
/ 15 мая 2018

Существует два вида промежуточного представления (IR) в дизайне компилятора, кратко представленные здесь : графическое (например, дерево абстрактного синтаксиса) и линейное (например, LLVM IR). Каковы плюсы и минусы двух?

Я заметил, что Clang реализовал оба, но, похоже, только линейное представление (LLVM IR) используется в бэкэнде LLVM.

1 Ответ

0 голосов
/ 16 мая 2018

Это очень субъективное решение со стороны разработчика компилятора. На моем языке я реализую график AST, который затем используется для получения LLVM-IR. Я мог бы легко перейти от семантической проверки к IR, но я делаю некоторый рефакторинг / оптимизацию, которые AST прекрасно выполняет до генерации IR.

...