Método para convertir código fuente escrito en diversos lenguajes de programación a un lenguaje universal - Leitón-Jiménez, Jason; Barboza-Artavia, Luis Alonso (Instituto Tecnológico de Costa Rica, 2021)
Durante el desarrollo y mantenimiento de software se requiere analizar el código fuente de los programas para determinar factores de calidad. Sin embargo, la gran cantidad de lenguajes de programación dificultan su procesamiento, debido a que difieren gramaticalmente entre ellos (´arboles de sintaxis diferentes). Por ello se propone diseñar un método que sea capaz de traducir código Java, C# y RPG a un lenguaje universal, el cual se verifica de manera automática con el fin de asegurar que todos los elementos sintácticos fueron traducidos. Se presenta la arquitectura básica para entender el diseño del marco de trabajo desarrollado en esta investigación. Su funcionamiento se basa en la obtención de datos provenientes de los archivos de código, el mapeo de dichos datos a la estructura genérica y, por último, la presentación en formato JSON del árbol de sintaxis abstracta genérico. El árbol de sintaxis abstracta genérico se rige por cierta estructura general, por lo que se detallan los diagramas BNF de las principales sentencias, por ejemplo, clases, métodos, paquetes e importaciones. Se muestra la ejecución del método con proyectos en los lenguajes de programación Java, C# y RPG. De esta manera, se valida el funcionamiento tanto del método que traduce un lenguaje específico a uno genérico, así como el proceso de verificar que todos los elementos sintácticos del lenguaje específico hayan sido mapeados a esta estructura.

During software development and maintenance, it is necessary to analyze programs’ source code to determine quality factors. However, there are programming languages that make the process difficult, since they have different types of grammar (diversity of syntax). Therefore, the goal of this research is to design a method capable of translating source codes written in programming languages such as Java, C# and RPG into an universal language. This method must be verified automatically to ensure that all syntactic elements were translated. The basic architecture is presented to understand the framework designed in this research. Its functionality is based on data obtained from the source code files, the mapping of these data to a generic structure, and the presentation of the generic structure in JSON format. The generic abstract syntax language is ruled by a general structure, therefore, BNF diagrams for the main statements are presented in detail; for example: classes, methods, packages and imports. The results of applying the method are presented with projects written in programming languages such as Java, C# and RPG. The method’s operation is validated: it is able to translate a specific language into a generic one, and a tool helps verify that all syntactic elements from a specific programming language have been mapped to the generic structure.
Proyecto de Graduación (Maestría en Computación) Instituto Tecnológico de Costa Rica, Escuela de Ingeniería en Computación, 2021.
Keywords: Código fuente; Lenguajes de programación; Metadatos; Java; MOF (Meta Object Facility); Source code; Metadata; Programming languages; AST (Árbol de sintaxis abstracta); Research Subject Categories::TECHNOLOGY::Information technology::Computer science