AST · Abstract Syntax Tree

BackendЧастота употребления: высокая· Сложность: 3/5· Актуальность: 5/5· Тренд: растёт

AST (абстрактное синтаксическое дерево) — иерархическое представление исходного кода в виде узлов, соответствующее синтаксическим конструкциям языка без лишних деталей форматирования.

Подробно

AST — это структура данных, которую парсер строит из исходного кода: каждый узел описывает конструкцию языка (выражение, оператор, объявление, вызов функции). В дерево не попадают пробелы, комментарии и другие незначащие детали, поэтому по нему удобно программно анализировать и преобразовывать код. На AST работают компиляторы и интерпретаторы, линтеры (ESLint), форматтеры (Prettier), транспайлеры (Babel, TypeScript), инструменты рефакторинга, статического анализа и IDE-навигации. В современных мультиязычных парсерах (tree-sitter) AST используется также для подсветки синтаксиса, поиска по коду и построения AI-ассистентов программиста.

Примеры употребления

  • python -c "import ast; print(ast.dump(ast.parse('x = 1 + 2'), indent=2))"
  • Выражение 1 + 2*3 в AST выглядит как BinOp(left=1, op=Add, right=BinOp(left=2, op=Mult, right=3))
  • Babel обходит AST через @babel/traverse и заменяет узлы при транспиляции современного JS в старый
  • tree-sitter строит AST в редакторе для подсветки, свёртывания блоков и поиска определения символа
#парсинг #компиляторы #статический анализ #tree-sitter

Источники