AST · Abstract Syntax Tree
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 в редакторе для подсветки, свёртывания блоков и поиска определения символа
