TGViewer
.NET Kings .NET Kings @netskings · 7.38K subscribers
Post #499 2.44K
👁‍🗨Hello world~

AST-деревья: Мост между кодом и машиной

• В посте про антивирус упомянул такую вещь как AST-дерево, сегодня я попытаюсь объяснить что это такое.

• AST — (Abstract Syntax Tree) — (Абстрактное синтаксическое дерево) — это древовидное представление структуры исходного кода программы, созданное на основе синтаксического анализа. AST используется компиляторами, интерпретаторами, статическими анализаторами кода и другими инструментами.

• AST — отличается от исходного кода, CST, и промежуточного представления кода следующим:

• В отличие от исходного кода, в AST отсутствуют необязательные элементы, такие как пробелы и комментарии.

• От конкретного синтаксического дерева (CST, Concrete Syntax Tree) AST отличается тем, что CST содержит все элементы кода, включая скобки, точки с запятой и другие синтаксические символы, а AST представляет только семантически значимые конструкции.

• И от промежуточного представления (IR, Intermediate Representation), тем, что IR обычно предназначен для оптимизации и генерации машинного кода, тогда как AST больше ориентирован на анализ и трансформации исходного кода.

• AST состоит из узлов (nodes), каждый из которых представляет определенную конструкцию языка программирования. Узлы могут быть нескольких типов:

• Листовые узлы (Leaf Nodes) — представляют идентификаторы, литералы и другие терминальные символы.
• Внутренние узлы (Internal Nodes) — соответствуют конструкциям языка, таким как операторы (if, for, while), объявления функций, выражения (a + b, x * y) и т. д.

• Процесс построения AST включает несколько этапов:

• Лексический анализ (Lexical Analysis): Исходный код разбивается на токены.
• Синтаксический анализ (Parsing): Из токенов строится CST.
• Преобразование CST -> AST: CST очищается от лишних элементов, таких как скобки и знаки пунктуации.

• AST широко используется в антивирусах и реверс инжиниринге, так как упрощает декомпиляцию кода, помогает выявлять шаблоны и многое другое. Удачи!

• Поддержать автора монеткой: @v_meshke
  • ❤ 9
  • 👍 4
  • 🔥 3
More from @netskings
  1. Sep 24, 2026👁‍🗨Hello world~ Как работает антивирус: Direct и Indirect Syscalls • Если EDR перехватыв…
  2. Sep 23, 2026🔎По одному имени, почте или номеру можно собрать на человека целое досье — легально, из о…
  3. Sep 23, 2026👁‍🗨Hello world~ GEOINT: Пожары, землетрясения и другие катастрофы на карте • Карты приро…
  4. Sep 22, 2026👁‍🗨Hello world~ Runit против systemd: Где минимализм начинает мешать • Я уже рассказывал…
  5. Sep 19, 2026👁‍🗨Hello world~ Изучаем сеть: Как компьютер определяет маршрут пакета • Представим, что…
  6. Sep 18, 2026👁‍🗨Hello world~ OSINT во ВКонтакте: История профиля и проверка старых данных • Пользоват…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →