Перейти к содержимому
Aback Tools Logo

Визуализатор и проводник JavaScript AST

Разбирайте и исследуйте код JavaScript как интерактивное абстрактное синтаксическое дерево. Вставьте или загрузите любой код JS, чтобы просмотреть его разобранную древовидную структуру с типами узлов с цветовой кодировкой, расширяемыми ветвями, подробными свойствами и фильтрацией типов узлов. Идеально подходит для понимания структуры кода, анализа запутанных скриптов и изучения того, как работают парсеры JavaScript.

JavaScript AST Visualizer & Explorer

Parse JavaScript code into an interactive Abstract Syntax Tree. Paste your code below, then explore the tree by expanding nodes and clicking to inspect properties.

AST Tree
▼ProgramProgram
▼body[4]
▼FunctionDeclarationFunction greet
name:greet
▼params[1]
▼Identifiername
name:name
▼BlockStatementBlockStatement
▼body[1]
▼ReturnStatementreturn
▼BinaryExpressionBinaryExpression + Literal
operator:+
▼BinaryExpressionLiteral + Identifier
operator:+
▼Literal"Hello, "
value:"Hello, "
raw:"Hello, "
▼Identifiername
name:name
▼Literal"!"
value:"!"
raw:"!"
generator:false
▼VariableDeclarationconst (1 declarator)
kind:const
▼declarations[1]
▼VariableDeclaratorVariableDeclarator
▼Identifierusers
name:users
▼ArrayExpressionArrayExpression
▼elements[3]
▼Literal"Alice"
value:"Alice"
raw:"Alice"
▼Literal"Bob"
value:"Bob"
raw:"Bob"
▼Literal"Charlie"
value:"Charlie"
raw:"Charlie"
▼ClassDeclarationClass Calculator
name:Calculator
▼body[2]
▼MethodDefinitionconstructor constructor
kind:constructor
▼Identifierconstructor
name:constructor
▼params[1]
▼Identifierfactor
name:factor
▼BlockStatementBlockStatement
▼body[1]
▼ExpressionStatementExpressionStatement
expression:[object Object]
generator:false
static:false
▼MethodDefinitionmethod multiply
kind:method
▼Identifiermultiply
name:multiply
▼params[2]
▼Identifiera
name:a
▼Identifierb
name:b
▼BlockStatementBlockStatement
▼body[1]
▼ReturnStatementreturn
▼BinaryExpressionBinaryExpression * MemberExpression
operator:*
▼BinaryExpressionIdentifier * Identifier
operator:*
▼Identifiera
name:a
▼Identifierb
name:b
▼MemberExpressionMember.
ThisExpressionThisExpression
▼Identifierfactor
name:factor
computed:false
generator:false
static:false
▼IfStatementif statement
▼BinaryExpressionMemberExpression > Literal
operator:>
▼MemberExpressionMember.
▼Identifierusers
name:users
▼Identifierlength
name:length
computed:false
▼Literal0
value:0
raw:0
▼BlockStatementBlockStatement
▼body[1]
▼ForStatementfor statement
▼VariableDeclarationlet (1 declarator)
kind:let
▼declarations[1]
▼VariableDeclaratorVariableDeclarator
▼Identifieri
name:i
▼Literal0
value:0
raw:0
▼BinaryExpressionIdentifier < MemberExpression
operator:<
▼Identifieri
name:i
▼MemberExpressionMember.
▼Identifierusers
name:users
▼Identifierlength
name:length
computed:false
▼UpdateExpressionUpdateExpression
operator:++
▼Identifieri
name:i
prefix:false
▼BlockStatementBlockStatement
▼body[1]
▼ExpressionStatementExpressionStatement
expression:[object Object]
Parse Stats
Lines of code21
Tokens99
Unique node types20
Total nodes71
Node Type Breakdown
Identifier25
Literal7
BinaryExpression6
MemberExpression6
BlockStatement5
ReturnStatement2
VariableDeclaration2
VariableDeclarator2
MethodDefinition2
ExpressionStatement2
ThisExpression2
CallExpression2
Program1
FunctionDeclaration1
ArrayExpression1
ClassDeclaration1
AssignmentExpression1
IfStatement1
ForStatement1
UpdateExpression1

Click any AST node to view its properties

Зачем использовать наш визуализатор JavaScript AST?

  • Мгновенная визуализация AST: анализируйте любой код JavaScript и мгновенно визуализируйте его абстрактное синтаксическое дерево в виде интерактивного дерева. Вставьте или загрузите код JS и сразу же увидите проанализированную структуру с типами узлов с цветовой кодировкой, расширяемыми ветвями и подробной информацией о свойствах для каждого узла. Весь анализ происходит локально в вашем браузере.
  • Безопасный и конфиденциальный анализ кода: ваш исходный код JavaScript никогда не покидает ваше устройство. Весь анализ, генерация деревьев и анализ AST полностью выполняются в вашем браузере с использованием чистого JavaScript. Никаких загрузок, никакого отслеживания, никакой обработки на сервере — полная конфиденциальность всего кода, который вы анализируете.
  • JS AST Explorer Online — без установки. Используйте визуализатор JavaScript AST непосредственно в любом современном браузере без необходимости загрузки, приложений или плагинов. Работает в автономном режиме после первой загрузки и обрабатывает ввод JavaScript любого размера. 100% бесплатно навсегда и без регистрации.
  • Интерактивная навигация и фильтрация по дереву: перемещайтесь по сложным деревьям AST с расширяемыми/сворачиваемыми узлами, осуществляйте поиск по типу узла и просматривайте подробные свойства любого выбранного узла. Типы узлов с цветовой кодировкой позволяют легко идентифицировать объявления функций, объявления переменных, выражения и многое другое.

Распространенные случаи использования JavaScript AST Visualizer

  • Анализ исходного кода JavaScript. Разработчики используют визуализатор AST, чтобы понять структуру исходного кода JavaScript, просматривая его разобранное древовидное представление. Посмотрите, как синтаксический анализатор интерпретирует ваш код, определите неоднозначные конструкции и убедитесь, что структура вашего кода соответствует вашим намерениям.
  • Обратная инженерия запутанного кода. Исследователи безопасности и специалисты по обратному проектированию используют визуализатор AST для анализа запутанного кода JavaScript. При просмотре разобранной древовидной структуры скрытые шаблоны, закодированные строки и изменения потока управления становятся видимыми, даже если исходный код намеренно скрыт.
  • Образование и обучение программированию. Студенты и преподаватели используют визуализатор JavaScript AST, чтобы узнать, как анализаторы JavaScript интерпретируют код. Визуальное представление дерева делает абстрактные понятия, такие как подъем, область действия и оценка выражений, осязаемыми, показывая, как именно синтаксический анализатор структурирует каждую конструкцию.
  • Линтинг кода и проверка синтаксиса. Инженеры по обеспечению качества используют визуализатор AST, чтобы убедиться, что код синтаксически допустим и структурирован должным образом. Проанализированное дерево выявляет синтаксические ошибки, непредвиденное вложение и структурные проблемы, которые могут быть упущены при непосредственном чтении исходного кода.
  • Преобразование кода и разработка инструментов. Разработчики, создающие инструменты преобразования кода, линтеры или минификаторы, используют визуализатор AST, чтобы понять, как будет анализироваться их целевой код. Просматривайте точные типы, положения и свойства узлов, создаваемые анализатором, чтобы написать точную логику преобразования.
  • Аудит безопасности и анализ уязвимостей. Аудиторы безопасности используют визуализатор JavaScript AST для анализа потенциально вредоносного кода. Проанализированное дерево обнаруживает вызовы eval(), доступ к динамическим свойствам, подозрительные конструкции функций и другие закономерности, которые могут указывать на попытки внедрения кода или обфускации.

Что такое абстрактное синтаксическое дерево JavaScript (AST)?

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

AST являются основой для большинства инструментов анализа кода: компиляторы, линтеры (ESLint), форматтеры (Prettier), минификаторы (Terser) и обфускаторы работают путем анализа исходного кода в AST, его преобразования и генерации нового кода из измененного дерева. Наш визуализатор JavaScript AST делает это внутреннее представление видимым и доступным для изучения, помогая вам точно понять, как синтаксический анализатор интерпретирует структуру вашего кода.

Как работает наш визуализатор JavaScript AST

  1. 1. Лексический анализ (токенизация): инструмент сначала разбивает исходный код JavaScript на токены — наименьшие значимые единицы, такие как ключевые слова (функция, const, if), идентификаторы (имена переменных и функций), операторы (+, =, =>) и знаки препинания ((, {',;). Каждый токен помечен его типом и положением в источнике.
  2. 2. Синтаксический анализ. Затем поток токенов анализируется в соответствии с правилами грамматики JavaScript для построения абстрактного синтаксического дерева. Анализатор распознает конструкции языка, такие как объявления функций, определения классов, объявления переменных, циклы, условные выражения и выражения, организуя их в иерархическую древовидную структуру, где родительские узлы содержат дочерние узлы, представляющие их составные части.
  3. 3. Отрисовка дерева и взаимодействие. Разобранный AST отображается как интерактивное складное дерево. Каждый узел имеет цветовую кодировку в соответствии с его категорией типа (объявления, операторы, выражения, шаблоны), а щелчок по узлу открывает его подробные свойства, включая тип, положение (строка/столбец) и дочерние ссылки. Вы можете разворачивать и сворачивать ветки, выполнять поиск по типу узла и исследовать полную древовидную структуру.

Ключевые типы и категории узлов AST

  • Программа: корневой узел, представляющий весь файл JavaScript. Содержит массив тела со всеми операторами верхнего уровня, включая импорт, объявления функций, объявления классов и объявления переменных.
  • Объявления: узлы, представляющие именованные конструкции — FunctionDeclaration (функция с именем, параметрами, телом), VariableDeclaration (const/let/var с деклараторами), ClassDeclaration (класс с телом, суперкласс), ImportDeclaration и ExportDeclaration.
  • Операторы: узлы, представляющие исполняемые операторы — ExpressionStatement, IfStatement, ForStatement, WhileStatement, ReturnStatement, TryStatement, SwitchStatement и другие.
  • Выражения: узлы, представляющие значения и операции — BinaryExpression (a + b), CallExpression (foo()), MemberExpression (a.b), ArrowFunctionExpression, ArrayExpression, ObjectExpression, Literal, Identifier и TemplateLiteral.

Использование AST Explorer для анализа кода

Визуализатор JavaScript AST — важный инструмент для всех, кто занимается анализом, преобразованием или обфускацией кода. При анализе запутанного кода AST выявляет структурные шаблоны, скрытые в исходном коде: закодированные строки отображаются как узлы CallExpression с определенными шаблонами аргументов, сглаживание потока управления отображается как оболочки SwitchStatement или WhileStatement, а внедрение мертвого кода отображается как недоступные ветви в дереве.

В целях обучения визуализатор AST помогает устранить разрыв между тем, как вы пишете код, и тем, как его интерпретирует синтаксический анализатор. Поэкспериментируйте с различными конструкциями JavaScript, чтобы увидеть, как они сопоставляются с узлами дерева. Вы заметите, как стрелочные функции и обычные функции создают разные структуры AST или как деструктуризация создает вложенные узлы шаблона. Вся обработка выполняется локально в вашем браузере, без отправки данных на внешние серверы.

Часто задаваемые вопросы

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

Наш визуализатор JavaScript AST использует специальный синтаксический анализатор, который точно соответствует грамматике спецификации ECMAScript. Он обрабатывает современные функции JavaScript, включая функции стрелок, литералы шаблонов, деструктуризацию, асинхронность/ожидание, классы, модули и синтаксис ES6+. Хотя он, возможно, и не охватывает все крайние случаи полной спецификации ECMAScript, он точно анализирует подавляющее большинство реального кода JavaScript, с которым вы столкнетесь.

Абсолютно. Весь анализ и генерация AST полностью происходят в вашем браузере с использованием чистого JavaScript. Ваш исходный код, будь то собственные алгоритмы, запутанные сценарии или конфиденциальная бизнес-логика, никогда не покидает ваше устройство. Никакие данные не загружаются ни на один сервер, а код, который вы анализируете, не отслеживается и не хранится.

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

Обозреватель AST поддерживает более 30 типов узлов, охватывающих весь спектр синтаксиса JavaScript. К ним относятся Program, FunctionDeclaration, VariableDeclaration, ClassDeclaration, ImportDeclaration, ExportDeclaration, IfStatement, ForStatement, WhileStatement, ReturnStatement, TryStatement, BinaryExpression, CallExpression, MemberExpression, ArrowFunctionExpression, ArrayExpression, ObjectExpression, TemplateLiteral, Literal, Identifier и многие другие. Каждый тип узла имеет свой цвет в дереве для облегчения идентификации.

Каждый узел AST отображает свой тип (вид конструкции), позицию (начальную и конечную строку/столбец в источнике) и свойства, специфичные для типа. Например, узел FunctionDeclaration показывает имя функции, массив параметров и ссылку на тело. BinaryExpression показывает оператор и левый/правый операнды. Литерал показывает необработанное значение и проанализированное значение. Эти свойства представляют точную информацию, которую компилятор или преобразователь будет использовать при обработке кода.

Визуализатор AST предназначен в первую очередь для стандартного JavaScript (ES2015/ES6+). Хотя он поддерживает большинство современных функций JavaScript, синтаксис, специфичный для TypeScript (аннотации типов, интерфейсы, перечисления) и синтаксис JSX, может анализироваться неправильно. Для анализа TypeScript или JSX перед анализом удалите аннотации типов и теги JSX или используйте обозреватель AST, предназначенный для TypeScript.

Средство просмотра дерева предоставляет свертываемые узлы, поэтому вы можете разворачивать только те ветви, которые вас интересуют. Вы также можете фильтровать узлы по типу, используя входные данные поиска/фильтрации — введите имя типа узла, например FunctionDeclaration или VariableDeclaration, чтобы выделить соответствующие узлы. Большие деревья автоматически управляются посредством постепенного раскрытия — начните с расширения тела верхнего уровня, а затем переходите к конкретным объявлениям и выражениям.

Да, наш визуализатор JavaScript AST на 100% бесплатен, без каких-либо скрытых затрат или ограничений. Регистрация не требуется, нет премиум-уровня, нет ограничений на использование, нет ограничений на размер файлов и нет рекламы. Используйте его неограниченное количество раз для любого личного или коммерческого проекта. Весь анализ и визуализация происходят локально в вашем браузере.