Size: a a a

Compiler Development

2019 September 23

А

Антон in Compiler Development
может хватить и тупой таблицы с идентификаторами
источник

А

Антон in Compiler Development
а вот если понадобится модифицировать код, "разворачивать" или генерировать - тогда такая таблица не поможет
источник

А

Антон in Compiler Development
понадобится нормальное AST что бы понимать где у тебя находятся ноды и что они делают
источник

А

Антон in Compiler Development
эту таблицу даже связным списком не представить
источник

А

Алексей in Compiler Development
вы вообще понимаете, что эта таблица - это тоже самое AST, если взять AST и вывести его представление в памяти, то получится тоже самое
источник

А

Алексей in Compiler Development
только вместо uid будут адреса нод
источник

А

Алексей in Compiler Development
то есть те же самые uid если по простому
источник

А

Антон in Compiler Development
Алексей
то есть те же самые uid если по простому
да, но
источник

А

Антон in Compiler Development
у нод AST на много больше информации чем в этой таблице
источник

А

Алексей in Compiler Development
это почему?
источник

А

Антон in Compiler Development
Алексей
это почему?
источник

А

Антон in Compiler Development
ну например
источник

А

Алексей in Compiler Development
чего?
источник

А

Алексей in Compiler Development
AST вообще не обязано поддерживать xpath
источник

А

Алексей in Compiler Development
На самом деле, вариантов не строить AST в нетривиальных случаях особо и нет. Единственный выход обойтись без AST: это построение однопроходного компилятора, который прям во время парсинга и только по данным из парсера и ещё максимум из таблицы символов будет генерировать некий код.
источник

АУ

Анна Удовиченко in Compiler Development
Алексей
На самом деле, вариантов не строить AST в нетривиальных случаях особо и нет. Единственный выход обойтись без AST: это построение однопроходного компилятора, который прям во время парсинга и только по данным из парсера и ещё максимум из таблицы символов будет генерировать некий код.
кажется, что это неявное AST в дереве вызовов, например, рекурсивного спуска 🤔
источник

А

Алексей in Compiler Development
Анна Удовиченко
кажется, что это неявное AST в дереве вызовов, например, рекурсивного спуска 🤔
ну фактически да
источник

А

Алексей in Compiler Development
точнее скорее будет кусочек дерева
источник

АУ

Анна Удовиченко in Compiler Development
Да, полностью в памяти получается не строится, но всё равно незримо присутствует 😂
источник

А

Алексей in Compiler Development
да. потому что языки программирования древовидны по своей природе
источник