Abstract

This article is devoted to KAST language extensions introduced for purposes of sources code transformation. Currently KAST is used for matching syntactic patterns in syntactic trees built of C/C++, Java or C# sources. Several existing approaches to code transformation are also considered and KAST advantages over those approaches are highlighted. A method for converting modifications of syntactic trees into modifications of source code is also described.

Highlights

  • This article is devoted to KAST pattern language extensions introduced for purposes of source code transformation

  • KAST is used for matching syntactic patterns in syntactic trees built of C/C++, Java or C# sources

  • After introducing several new functions that can be called from a pattern, KAST patterns became applicable for detecting desired fragments of syntactic trees, but for specifying modifications of those fragments as well

Read more

Summary

Введение

Необходимость в трансформации исходного кода возникает во многих областях программной инженерии. Что KAST предназначен для поиска поддеревьев заданного в виде шаблона вида в синтаксических деревьях, построенных по коду на языках C/C++, Java и C#, и в настоящее время используется для выявления синтаксических структур, представляющих собой дефекты исходного кода. Однако синтаксис языка KAST после небольшого расширения позволяет использовать его для написания процедур трансформации кода; при этом шаблоны будут задавать фрагменты кода, подлежащие замене, а описываемые в данной статье расширения языка позволят определять те конструкции, на которые их следует заменять. Найти в коде на языке C определения всех функций, для которых не указан тип возвращаемого значения, и добавить в эти определения ‘int’ в качестве типа результата. Подобные умолчания затрудняют понимание кода и делают его более трудным для сопровождения, а предлагаемое в данном примере автоматическое преобразование суть наиболее очевидное решение данной проблемы

Существующие решения
DMS: Software Reengineering Toolkit
Синтаксис языка KAST
Конструкторы узлов
Функции модификации синтаксического дерева
Модификация исходного кода
Ограничения метода и пути их преодоления
Заключение

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.