TRANSFORMACIJE STABALA APSTRAKTNE SINTAKSE U PROGRAMSKI KOD
Ključne reči:
Stablo apstraktne sintakse, jezici specifični za domen, refaktorisanje
Apstrakt
Mnogi napredni alati koji automatizuju izmjene programskog koda, kao što su alati za automatsko refaktorisanje, zasnivaju se na izmjenama stabla apstraktne sintakse. Izmjene izvršene na stablu je zatim potrebno primijeniti na originalni izvorni kod, što se može postići transformacijom stabla nazad u tekstualni oblik. U ovom radu su istražena i implementirana rješenja za implementaciju ovakvih transformacija, uz očuvanje nesemantičkih elemenata originalnog izvornog koda, kao što su komentari i ručno formatiranje.
Reference
[1] Kent Beck, Cynthia Andres, “Extreme Programming Explained: Embrace Change (2nd Edition)”, Addison-Wesley Professional, 2004.
[2] J. Overbey, R. Johnson, “Generating rewritable abstract syntax trees”, SLE, 2008.
[3] M. de Jonge, “Pretty-printing for software reengineering”, International Conference on Software Maintenance, 2002. Proceedings, pp. 550–559, 2002.
[4] M. de Jonge, E. Visser, “An algorithm for layout preservation in refactoring transformations.”, SLE, 2011.
[5] M. Van De Vanter, “Preserving the Documentary Structure of Source Code in Language-Based Transformation Tools”, SCAM, pp. 133-143, 2011.
[6] I. Dejanović, R. Vaderna, G. Milosavljević, Ž. Vuković, “TextX: A python tool for domain-specific languages implementation”, Knowledge-Based Systems, 115:1-4, 2017.
[7] I. Dejanović, G. Milosavljević, R. Vaderna, “Arpeggio: A flexible PEG parser for Python”, Knowledge-Based Systems, issn:0950-7051, vol.95, p.71–74, DOI:10.1016/j.knosys.2015.12.004, 2016.
[2] J. Overbey, R. Johnson, “Generating rewritable abstract syntax trees”, SLE, 2008.
[3] M. de Jonge, “Pretty-printing for software reengineering”, International Conference on Software Maintenance, 2002. Proceedings, pp. 550–559, 2002.
[4] M. de Jonge, E. Visser, “An algorithm for layout preservation in refactoring transformations.”, SLE, 2011.
[5] M. Van De Vanter, “Preserving the Documentary Structure of Source Code in Language-Based Transformation Tools”, SCAM, pp. 133-143, 2011.
[6] I. Dejanović, R. Vaderna, G. Milosavljević, Ž. Vuković, “TextX: A python tool for domain-specific languages implementation”, Knowledge-Based Systems, 115:1-4, 2017.
[7] I. Dejanović, G. Milosavljević, R. Vaderna, “Arpeggio: A flexible PEG parser for Python”, Knowledge-Based Systems, issn:0950-7051, vol.95, p.71–74, DOI:10.1016/j.knosys.2015.12.004, 2016.
Objavljeno
2022-04-08
Sekcija
Elektrotehničko i računarsko inženjerstvo