Back to Search View Original Cite This Article

Abstract

<jats:p>Аналіз і трансформація абстрактних синтаксичних дерев є ключовими задачами, що виникають при розробці компіляторів, статичних аналізаторів та засобів автоматизованого рефакторингу. Розробники, які обирають мову Clojure для цих задач, стикаються з проблемою відсутності цілісної вбудованої системи для комплексного аналізу коду. Використання зовнішніх інструментів створюють значні проблеми при їх інтеграції, адже процеси аналізу та трансформації виконуються за межами основної програмної системи, що ускладнює спільне використання даних, тоді як наявні вбудовані рішення змушують працювати на низькому рівні абстракції або створюють «декларативно-імперативний розрив», де пошук є декларативним, а генерація нових дерев залишається імперативною. У роботі для вирішення цієї проблеми запропоновано метод, який реалізований шляхом створення вбудованої предметно-орієнтованої мови DALT. Суть методу полягає у структурній трансформації програмного коду, що базується на механізмі квазіцитування конкретного синтаксису. Цей підхід дозволяє оперувати не об’єктами синтаксичних дерев, а текстовими шаблонами, що візуально відповідають коду цільової мови. Ключовою особливістю методу є уніфікація процесів аналізу та синтезу: запропонований механізм шаблонів використовується  для представлення синтаксичних дерев як в операціях зіставлення зі зразком, так і для генерації нових структур. У статті також описано розроблені декларативні засоби для зіставлення, рекурсивного переписування та синтезу дерев. Особливу увагу приділено гнучкому механізму керування стратегіями обходу, що дозволяє комбінувати правила з низхідною та висхідною семантикою в межах єдиного процесу трансформації. Ефективність методу підтверджено експериментально на задачі побудови графів потоку виконання для програм написаних мовою Java. Порівняльний аналіз продемонстрував, що застосування мови DALT дозволило суттєво скоротити обсяг коду порівняно з імперативною реалізацією.</jats:p>

Show More

Keywords

для що дерев та коду

Related Articles

PORE

About

Connect