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
Summary
Необходимость в трансформации исходного кода возникает во многих областях программной инженерии. Что KAST предназначен для поиска поддеревьев заданного в виде шаблона вида в синтаксических деревьях, построенных по коду на языках C/C++, Java и C#, и в настоящее время используется для выявления синтаксических структур, представляющих собой дефекты исходного кода. Однако синтаксис языка KAST после небольшого расширения позволяет использовать его для написания процедур трансформации кода; при этом шаблоны будут задавать фрагменты кода, подлежащие замене, а описываемые в данной статье расширения языка позволят определять те конструкции, на которые их следует заменять. Найти в коде на языке C определения всех функций, для которых не указан тип возвращаемого значения, и добавить в эти определения ‘int’ в качестве типа результата. Подобные умолчания затрудняют понимание кода и делают его более трудным для сопровождения, а предлагаемое в данном примере автоматическое преобразование суть наиболее очевидное решение данной проблемы
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
More From: Proceedings of the Institute for System Programming of RAS
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.