Return to search

Transformacijų tarp konkrečių programavimo kalbų abstrakčios sintaksės medžių ir nuo kalbos nepriklausomų abstrakčios sintaksės medžių tyrimas / Investigation of transformations between abstract syntax trees of a concrete programming language and language-independent abstract syntax trees

Medžių tipo duomenų struktūras transformuojantys įrankiai naudojami išspręsti gausybę įvairaus tipo problemų: kompiliatorių, kodo optimizatorių, dokumentacijos ir kodo generavimo įrankių kūrimo ir pan. Bet nei vienas iš šių egzistuojančių įrankių nėra specialiai skirtas abstrakčios sintaksės medžių transformacijoms į nuo kalbos nepriklausomą formą, ar iš jo.
Šis magistro darbas aprašo sistemą, kuri pateiktą konkretų abstrakčios sintaksės medį (abstrakčios sintaksės medį, kuris išreiškia realios programavimo kalbos – C#, Java, Ruby ar pan. –
programinio kodo struktūrą) transformuoja į nuo kalbos nepriklausomą abstrakčios sintaksės medį, bei atvirkščiai. Taisyklės, aprašančios vieno medžio transformavimą į kitą, yra aprašytos XML formatu paremtuose failuose, kurių struktūra aiški ir paprasta. Sistemą galima naudoti kaip nepriklausomą komponentą arba kaip įrankį trečiųjų šalių programinėje įrangoje. Tiek sistemos pagrindinės bibliotekos, tiek jas naudojantys įrankiai yra parašyti Java programavimo kalba.
Sistemos tyrimu siekta įrodyti du dalykus: kad sistema gali teisingai transformuoti pateiktąjį konkretų abstrakčios sintaksės medį į jį atitinkantį bendrinį medį, ir atvirkščiai; ir kad transformavimo vykdymo laikas yra leistinose ribose. Abiejų tikslų buvo pasiekta. Remiantis šiais rezultatais prieita išvados, jog sistema yra tinkamas kandidatas tapti pagrindu trečiųjų šalių įrankiams, atliekantiems programinio kodo migravimą, pertvarkymus (angl. „refactoring“), modelių... [toliau žr. visą tekstą] / Tools for transforming tree-like data structures are used for solving a range of different problems, such as creation of compilers, code optimizers, documentation and code generation tools, etc. But none of these existing tools seem to be specialized in transforming abstract syntax trees to a language-independent format or from it. This master‘s thesis describes a system that takes concrete abstract syntax trees (ASTs that represent the structure of code written in a real programming language, such a C#, Java, Ruby, etc.) and transforms them into language-independent abstract syntax trees, and vice versa. Rules for mapping one AST to the other are defined in XML-based configuration files that have a simple and clear structure. The system can be used as a stand-alone tool or used as component in third party software. Both the system’s core libraries and tools are written in Java. The purpose of the system’s investigation was to prove two things: that the system can correctly transform a given specific AST to an equivalent generic AST, and vise versa; and that the transformation execution time is within an acceptable range. Both goals were met. This led to a conclusion that the system is a suitable candidate for use by third party tools that handle code migration, refactoring, model transformation and other types of similar tasks.

Identiferoai:union.ndltd.org:LABT_ETD/oai:elaba.lt:LT-eLABa-0001:E.02~2010~D_20100813_112931-39724
Date13 August 2010
CreatorsStankevičius, Rytis
ContributorsMotiejūnas, Kęstutis, Bareiša, Eduardas, Butleris, Rimantas, Tomkevičius, Arūnas, Šeinauskas, Rimantas, Štuikys, Vytautas, Packevičius, Šarūnas, Nemuraitė, Lina, Pilkauskas, Vytautas, Kaunas University of Technology
PublisherLithuanian Academic Libraries Network (LABT), Kaunas University of Technology
Source SetsLithuanian ETD submission system
LanguageLithuanian
Detected LanguageUnknown
TypeMaster thesis
Formatapplication/pdf
Sourcehttp://vddb.laba.lt/obj/LT-eLABa-0001:E.02~2010~D_20100813_112931-39724
RightsUnrestricted

Page generated in 0.0018 seconds