Trabajo de grado - Pregrado
ANTLR 4 grammar of the Swift 5 programing language
Fecha
2021Registro en:
instname:Universidad de los Andes
reponame:Repositorio Institucional Séneca
Autor
Tarazona Bernal, Yeisson Steven
Institución
Resumen
Actualmente se enlistan entre 500 y 2000 lenguajes de programación de propósito general y entre 5000 y 25000 lenguajes informáticos activos. Todos los días se crean nuevos lenguajes de programación. Por lo tanto, cuando uno de estos lenguajes gana popularidad uno de los posibles intereses que podemos tener nosotros como desarrolladores es tener la capacidad de analizar dicho lenguaje. Por ejemplo, para analizar la calidad de los sistemas de software, detectando el porcentaje de código copiado en un programa. Para realizar tal tarea, primero necesitamos construir un analizador sintáctico, que dado un programa escrito en un lenguaje específico pueda reconocerlo y devolver una estructura en forma de árbol que luego se use como entrada para la herramienta de análisis estático deseada. Afortunadamente, no necesitamos generar analizadores sintácticos completos para lenguajes de programación, ya que esta tarea es muy compleja. Podemos utilizar generadores de analizadores sintácticos ya existentes, como ANTLR, que dado el conjunto de reglas que definen la estructura del lenguaje, es decir, la gramática, pueden generar un analizador sintáctico eficiente y correcto para dicho lenguaje. Siendo así, nos centraremos en el desarrollo de una gramática para la última especificación del lenguaje Swift (5.4). La gramática debe cumplir con la especificación del generador de analizadores sintácticos ANTLR 4 (metalenguaje de ANTLR), con el objetivo de generar un analizador sintáctico para Swift. There are currently listed between 500 and 2,000 general purpose programming languages and between 5,000 and 25,000 active computer languages. New programming languages are created every day. Therefore, when one of these languages gains popularity one of the possible interests, that we as developers can have, is to have the capability to analyze said language. For example, to analyze the quality of software systems, detecting the percentage of copied code in a program. In order to perform such a task, we first need to build a parser, that given a program written in a specific language can recognize it and return a tree like structure that is then used as input for a desired static analysis tool. Thankfully, we do not need to generate full parsers for programming languages, as this task is very complex. We can use existing parser generators, as ANTLR, that given the set of rules that defines the structure of the language, i.e., grammar, can generate an efficient and correct parser for said language. That being so, we will focus on the development of a grammar for the latest specification of the swift language (5.4). The grammar must comply with the ANTLR 4 parser generator specification (ANTLR's meta-language), with the objective to generate a parser for swift.