Use este identificador para citar ou linkar para este item: http://repositorio.utfpr.edu.br/jspui/handle/1/38619
Título: Proposta de uma ferramenta para produção de compiladores e um estudo comparativo de produtividade
Título(s) alternativo(s): Proposal of a tool for compiler development and a comparative study on productivity
Autor(es): Silio, Leonardo Trevisan
Orientador(es): Tacla, Cesar Augusto
Palavras-chave: Software - Desenvolvimento
Compiladores (Programas de computador)
Análise sintática (gramática computacional)
Linguagem de programação (Computadores) - Sintaxe)
Computer software - Development
Compilers (Computer programs
Parsing (Computer grammar)
Programming languages (Electronic computers) - Sintax
Data do documento: 27-Fev-2025
Editor: Universidade Tecnológica Federal do Paraná
Câmpus: Curitiba
Citação: SILIO, Leonardo Trevisan. Proposta de uma ferramenta para produção de compiladores e um estudo comparativo de produtividade. 2025. Trabalho de Conclusão de Curso (Bacharelado em Engenharia de Computação) - Universidade Tecnológica Federal do Paraná, Curitiba, 2025.
Resumo: Com o intuito de facilitar a criação de linguagens de programação e ferramentas semelhantes foi proposto e implementado de uma biblioteca, nomeada de Orkestra, que possibilite a confecção de compiladores com análise léxica e sintática, bem como recursos uteis como abstração de interfaces de linha de comando. Na biblioteca foi implementada um recurso de integração com o Visual Studio Code por meio da geração automática de uma extensão para o editor de texto baseando-se na linguagem definida pelo usuário do Orkestra por meio de regras léxicas e sintáticas. Para avaliar a tecnologia proposta foi elaborada uma metodologia comparativa para tecnologias semelhantes e então realizada uma análise usando a metodologia desenvolvida. Seguindo a metodologia, um projeto teste de uma linguagem de domínio específico chamada Brute Force. Cada tecnologia analisada, no caso, Orkestra, Flex/Bison, PeggyJS e ANTLR foi usada para implementar o projeto teste para que suas características pudessem ser comparadas. Foram levantadas características desejáveis e indesejáveis e atribuídos pontos a cada uma delas. Assim cada tecnologia recebeu uma pontuação com base nas características apresentadas em suas implementações do projeto teste. O Orkestra pontuou levemente abaixo das tecnologias de mercado, contudo apresentou características únicas o que sugere possibilidades de melhorias para tecnologias futuras desenvolvidas na área de compiladores.
Abstract: With the aim of facilitating the creation of programming languages and similar tools, a library named Orkestra was proposed and implemented to enable the development of compilers with lexical and syntactic analysis, as well as useful features such as command-line interface abstraction. The library includes an integration feature with Visual Studio Code through the automatic generation of an extension for the text editor, based on the language defined by the Orkestra user via lexical and syntactic rules. To evaluate the proposed technology, a comparative methodology for similar technologies was developed, followed by an analysis using the designed methodology. As part of this process, a test project for a domain-specific language called Brute Force was created. Each analyzed technology4namely Orkestra, Flex/Bison, PeggyJS, and ANTLR4was used to implement the test project só that their characteristics could be compared. Desirable and undesirable characteristics were identified and assigned scores accordingly. Based on these characteristics, each technology received a score reflecting its implementation of the test project. Orkestra scored slightly below the marketleading technologies; however, it demonstrated unique features, suggesting potential improvements for future technologies in the field of compilers.
URI: http://repositorio.utfpr.edu.br/jspui/handle/1/38619
Aparece nas coleções:CT - Engenharia de Computação

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
compiladores.pdf493,21 kBAdobe PDFThumbnail
Visualizar/Abrir


Este item está licenciada sob uma Licença Creative Commons Creative Commons