摘要(英) |
Modularization is one of the common concepts used in programming. Using modularization properly can improve the readability, maintainability and reusability of program. While modularization has been widely used in various programming fields, there are still have some fields where modularization has not been applied, for example source code transformation. Source code transformation can be mainly divided into text-based and structure-based; however, none of them either support modularization in transformation rule, or provide rule reusing methods. Therefore, when making transformation rule, it is difficult to directly see the meaning from the rule, and difficult to reuse the existing transformation rule. In order to solve this problem, we propose a text-based transformation tool called ReModuRutt, which provides modular rule making and easy-to-understand rule making interface. According to our experimental results, this tool is complete enough in terms of functional integrity, modularity, and ease of change. With this tool, users can make better use of existing rules, which can reduce the time spent on rule design, expansion, modification and reference, and make it easier to use source code transformation tools. |
參考文獻 |
[1] Python Software Foundation (2020). Automated Python 2 to 3 code translation. Retrieved from https://docs.python.org/2/library/2to3.html#using-2to3
[2] Apple Inc (2020). Migrating to Swift 5. Retrieved from
https://swift.org/migration-guide-swift5/
[3] Cordy, J. R., Dean, T. R., Malton, A. J., & Schneider, K. A. (2002). Source transformation in software engineering using the TXL transformation system. Information and Software Technology, 44(13), 827-837.
[4] Groce, A., Holmes, J., Marinov, D., Shi, A., & Zhang, L. (2018, May). An extensible, regular-expression-based tool for multi-language mutant generation. In 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion) (pp. 25-28). IEEE.
[5] Cordy, J. R. (2006). The TXL source transformation language. Science of Computer Programming, 61(3), 190-210.
[6] Klint, P., Van Der Storm, T., & Vinju, J. (2009, September). Rascal: A domain specific language for source code analysis and manipulation. In 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation (pp. 168-177). IEEE.
[7] Yi, Q. (2012). POET: a scripting language for applying parameterized source‐to‐source program transformations. Software: Practice and Experience, 42(6), 675-706.
[8] Takizawa, H., Hirasawa, S., Hayashi, Y., Egawa, R., & Kobayashi, H. (2014, December). Xevolver: An XML-based code translation framework for supporting HPC application migration. In 2014 21st International Conference on High Performance Computing (HiPC) (pp. 1-11). IEEE.
[9] Free Software Foundation (2020). Gawk. Retrieved from
https://www.gnu.org/software/gawk/
[10] Free Software Foundation (2020). Gun Sed. Retrieved from
https://www.gnu.org/software/sed/
[11] Notepad++ (2020). Don Ho. Retrieved from https://notepad-plus-plus.org/
[12] Visual Studio (2020). Microsoft. Retrieved from
https://visualstudio.microsoft.com/zh-hant/
[13] Parnas, D. L. (1972). On the criteria to be used in decomposing systems into modules. In Pioneers and Their Contributions to Software Engineering (pp. 479-498). Springer, Berlin, Heidelberg.
[14] Geoffrion, A. M. (1988). Reusing structured models via model integration (No. WMSI-WP-362). CALIFORNIA UNIV LOS ANGELES WESTERN MANAGEMENT SCIENCE INST.
[15] Grant Skinner (2020). regexr. Retrieved from https://github.com/gskinner/regexr
[16] Firas Dib (2020). Regex101. Retrieved from
https://github.com/firasdib/Regex101
[17] van Tonder, R., & Le Goues, C. (2019, June). Lightweight multi-language syntax transformation with parser parser combinators. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (pp. 363-378).
[18] Balland, E., Brauner, P., Kopetz, R., Moreau, P. E., & Reilles, A. (2007, June). Tom: Piggybacking rewriting on java. In International Conference on Rewriting Techniques and Applications (pp. 36-47). Springer, Berlin, Heidelberg.
[19] Bravenboer, M., Kalleberg, K. T., Vermaas, R., & Visser, E. (2008). Stratego/XT 0.17. A language and toolset for program transformation. Technical Report Series TUD-SERG-2008-011.
[20] Boshernitsan, M., & Graham, S. L. (2006, May). Interactive transformation of Java programs in Eclipse. In Proceedings of the 28th international conference on Software engineering (pp. 791-794).
[21] Boshernitsan, M. (2001). Harmonia: A flexible framework for constructing interactive language-based programming tools. Computer Science Division, University of California.
[22] Pawlak, R., Monperrus, M., Petitprez, N., Noguera, C., & Seinturier, L. (2016). Spoon: A library for implementing analyses and transformations of java source code. Software: Practice and Experience, 46(9), 1155-1179.
[23] Karaivanov, S., Raychev, V., & Vechev, M. (2014, October). Phrase-based statistical translation of programming languages. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (pp. 173-184).
[24] Karampatsis, R. M. Translating Natural Language into Source Code Via Tree Transduction
[25] Chen, X., Liu, C., & Song, D. (2018). Tree-to-tree neural networks for program translation. In Advances in neural information processing systems (pp. 2547-2557). |