Geração de compiladores baseada em componentes

Detalhes bibliográficos
Autor(a) principal: Gabriel de Godoy Corrêa e Castro
Data de Publicação: 2014
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFMG
Texto Completo: http://hdl.handle.net/1843/ESBF-9P2FVH
Resumo: A construção de um compilador de linguagens de porte real é um projeto grande e de alta complexidade. Dessa forma, são necessárias ferramentas que auxiliem esse processo de construção. Entretanto, os sistemas para a geração completa de um compilador ainda não se tornaram populares devido à sua complexidade de utilização, complicada pela baixa legibilidade de alguns sistemas e baixa reusabilidade de componentes de projetos similares. Este trabalho de dissertação apresenta um ambiente de desenvolvimento de compiladores cujo enfoque está na legibilidade do código de implementação dos tradutores, com o objetivo de tornar o ambiente mais simples de utilizar. Esse ambiente realiza a tradução do código fonte para uma árvore de sintaxe abstrata e realiza, subsequentemente, ações semânticas para geração de código durante o caminhamento da AST gerada. O ambiente é auxiliado por uma infraestrutura de geração de código que encapsula conceitos fundamentais e recorrentes de importantes construções de linguagens de programação imperativas. A infraestrutura é formada por componentes de ações semânticas, instruções de código intermediário e uma tabela de símbolos. Os componentes são utilizados pelo implementador da linguagem de programação para realizar as ações semânticas necessárias para a compilação das construções de sua linguagem. A tabela de símbolos é utilizada para controlar as declarações de variáveis utilizadas na infraestrutura e permite implementar diversas políticas de controle de escopo e alocação de memória. O ambiente foi validado com a implementação do compilador da linguagem Small, aqui definida.
id UFMG_f0e06a3d2de50c2478d43be5ef8c5a0f
oai_identifier_str oai:repositorio.ufmg.br:1843/ESBF-9P2FVH
network_acronym_str UFMG
network_name_str Repositório Institucional da UFMG
repository_id_str
spelling Roberto da Silva BigonhaFabio TireloMariza Andrade da Silva BigonhaVladimir Oliveira Di IorioGabriel de Godoy Corrêa e Castro2019-08-14T00:51:43Z2019-08-14T00:51:43Z2014-08-21http://hdl.handle.net/1843/ESBF-9P2FVHA construção de um compilador de linguagens de porte real é um projeto grande e de alta complexidade. Dessa forma, são necessárias ferramentas que auxiliem esse processo de construção. Entretanto, os sistemas para a geração completa de um compilador ainda não se tornaram populares devido à sua complexidade de utilização, complicada pela baixa legibilidade de alguns sistemas e baixa reusabilidade de componentes de projetos similares. Este trabalho de dissertação apresenta um ambiente de desenvolvimento de compiladores cujo enfoque está na legibilidade do código de implementação dos tradutores, com o objetivo de tornar o ambiente mais simples de utilizar. Esse ambiente realiza a tradução do código fonte para uma árvore de sintaxe abstrata e realiza, subsequentemente, ações semânticas para geração de código durante o caminhamento da AST gerada. O ambiente é auxiliado por uma infraestrutura de geração de código que encapsula conceitos fundamentais e recorrentes de importantes construções de linguagens de programação imperativas. A infraestrutura é formada por componentes de ações semânticas, instruções de código intermediário e uma tabela de símbolos. Os componentes são utilizados pelo implementador da linguagem de programação para realizar as ações semânticas necessárias para a compilação das construções de sua linguagem. A tabela de símbolos é utilizada para controlar as declarações de variáveis utilizadas na infraestrutura e permite implementar diversas políticas de controle de escopo e alocação de memória. O ambiente foi validado com a implementação do compilador da linguagem Small, aqui definida.The construction of a compiler of a real size programming language is a complex and big project. So, proper tools are needed to help in this task. However, compiler generation systems are still not popular yet. This is due to the complexity of these systems, complicated by their lack of readability and low reusability of language definitions used by other systems. This dissertation presents a compiler development environment which is focused on the readability of the compiler code, making the environment simpler to use. This environment translates the source code to an abstract syntax tree and performs, subsequently, semantic actions to generate code while visiting the AST generated. The environment is supported by a code generator infrastructure that encapsulates fundamental and recurring concepts of the constructs of imperative programming languages. The infrastructure consists of components of semantic actions, intermediary code instructions and a symbol table. The components are utilized by the programming language implementer to perform the semantic actions necessary to compile the language. The symbol table is used to control the declarations of the variables used in the infrastructure and allows the selection of different strategies for scope control and memory allocation. The environment was validated with an implementation for the compiler of the language Small, defined herein.Universidade Federal de Minas GeraisUFMGCompiladores (Computadores)Linguagens de programação (Computadores)ComputaçãoCompiladoresSemânticaLinguagens de programaçãoGeração de compiladores baseada em componentesinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMGORIGINALgabrielgodoy.pdfapplication/pdf1613226https://repositorio.ufmg.br/bitstream/1843/ESBF-9P2FVH/1/gabrielgodoy.pdf98be846aadb009009a201e77324fe234MD51TEXTgabrielgodoy.pdf.txtgabrielgodoy.pdf.txtExtracted texttext/plain332674https://repositorio.ufmg.br/bitstream/1843/ESBF-9P2FVH/2/gabrielgodoy.pdf.txt3efac6026a58439938646167d117c509MD521843/ESBF-9P2FVH2019-11-14 16:39:25.274oai:repositorio.ufmg.br:1843/ESBF-9P2FVHRepositório de PublicaçõesPUBhttps://repositorio.ufmg.br/oaiopendoar:2019-11-14T19:39:25Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false
dc.title.pt_BR.fl_str_mv Geração de compiladores baseada em componentes
title Geração de compiladores baseada em componentes
spellingShingle Geração de compiladores baseada em componentes
Gabriel de Godoy Corrêa e Castro
Compiladores
Semântica
Linguagens de programação
Compiladores (Computadores)
Linguagens de programação (Computadores)
Computação
title_short Geração de compiladores baseada em componentes
title_full Geração de compiladores baseada em componentes
title_fullStr Geração de compiladores baseada em componentes
title_full_unstemmed Geração de compiladores baseada em componentes
title_sort Geração de compiladores baseada em componentes
author Gabriel de Godoy Corrêa e Castro
author_facet Gabriel de Godoy Corrêa e Castro
author_role author
dc.contributor.advisor1.fl_str_mv Roberto da Silva Bigonha
dc.contributor.advisor-co1.fl_str_mv Fabio Tirelo
dc.contributor.referee1.fl_str_mv Mariza Andrade da Silva Bigonha
dc.contributor.referee2.fl_str_mv Vladimir Oliveira Di Iorio
dc.contributor.author.fl_str_mv Gabriel de Godoy Corrêa e Castro
contributor_str_mv Roberto da Silva Bigonha
Fabio Tirelo
Mariza Andrade da Silva Bigonha
Vladimir Oliveira Di Iorio
dc.subject.por.fl_str_mv Compiladores
Semântica
Linguagens de programação
topic Compiladores
Semântica
Linguagens de programação
Compiladores (Computadores)
Linguagens de programação (Computadores)
Computação
dc.subject.other.pt_BR.fl_str_mv Compiladores (Computadores)
Linguagens de programação (Computadores)
Computação
description A construção de um compilador de linguagens de porte real é um projeto grande e de alta complexidade. Dessa forma, são necessárias ferramentas que auxiliem esse processo de construção. Entretanto, os sistemas para a geração completa de um compilador ainda não se tornaram populares devido à sua complexidade de utilização, complicada pela baixa legibilidade de alguns sistemas e baixa reusabilidade de componentes de projetos similares. Este trabalho de dissertação apresenta um ambiente de desenvolvimento de compiladores cujo enfoque está na legibilidade do código de implementação dos tradutores, com o objetivo de tornar o ambiente mais simples de utilizar. Esse ambiente realiza a tradução do código fonte para uma árvore de sintaxe abstrata e realiza, subsequentemente, ações semânticas para geração de código durante o caminhamento da AST gerada. O ambiente é auxiliado por uma infraestrutura de geração de código que encapsula conceitos fundamentais e recorrentes de importantes construções de linguagens de programação imperativas. A infraestrutura é formada por componentes de ações semânticas, instruções de código intermediário e uma tabela de símbolos. Os componentes são utilizados pelo implementador da linguagem de programação para realizar as ações semânticas necessárias para a compilação das construções de sua linguagem. A tabela de símbolos é utilizada para controlar as declarações de variáveis utilizadas na infraestrutura e permite implementar diversas políticas de controle de escopo e alocação de memória. O ambiente foi validado com a implementação do compilador da linguagem Small, aqui definida.
publishDate 2014
dc.date.issued.fl_str_mv 2014-08-21
dc.date.accessioned.fl_str_mv 2019-08-14T00:51:43Z
dc.date.available.fl_str_mv 2019-08-14T00:51:43Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/1843/ESBF-9P2FVH
url http://hdl.handle.net/1843/ESBF-9P2FVH
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.publisher.initials.fl_str_mv UFMG
publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFMG
instname:Universidade Federal de Minas Gerais (UFMG)
instacron:UFMG
instname_str Universidade Federal de Minas Gerais (UFMG)
instacron_str UFMG
institution UFMG
reponame_str Repositório Institucional da UFMG
collection Repositório Institucional da UFMG
bitstream.url.fl_str_mv https://repositorio.ufmg.br/bitstream/1843/ESBF-9P2FVH/1/gabrielgodoy.pdf
https://repositorio.ufmg.br/bitstream/1843/ESBF-9P2FVH/2/gabrielgodoy.pdf.txt
bitstream.checksum.fl_str_mv 98be846aadb009009a201e77324fe234
3efac6026a58439938646167d117c509
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)
repository.mail.fl_str_mv
_version_ 1803589212468936704