Geração de compiladores baseada em componentes
=== 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 readabi...
Main Author: | |
---|---|
Other Authors: | |
Format: | Others |
Language: | Portuguese |
Published: |
Universidade Federal de Minas Gerais
2014
|
Online Access: | http://hdl.handle.net/1843/ESBF-9P2FVH |
id |
ndltd-IBICT-oai-bibliotecadigital.ufmg.br-MTD2BR-ESBF-9P2FVH |
---|---|
record_format |
oai_dc |
spelling |
ndltd-IBICT-oai-bibliotecadigital.ufmg.br-MTD2BR-ESBF-9P2FVH2019-01-21T18:08:41Z Geração de compiladores baseada em componentes Gabriel de Godoy Corrêa e Castro Roberto da Silva Bigonha Fabio Tirelo Fabio Tirelo Mariza Andrade da Silva Bigonha Vladimir Oliveira Di Iorio 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. 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. 2014-08-21 info:eu-repo/semantics/publishedVersion info:eu-repo/semantics/masterThesis http://hdl.handle.net/1843/ESBF-9P2FVH por info:eu-repo/semantics/openAccess text/html Universidade Federal de Minas Gerais 32001010004P6 - CIÊNCIA DA COMPUTAÇÃO UFMG BR reponame:Biblioteca Digital de Teses e Dissertações da UFMG instname:Universidade Federal de Minas Gerais instacron:UFMG |
collection |
NDLTD |
language |
Portuguese |
format |
Others
|
sources |
NDLTD |
description |
=== 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. === 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. |
author2 |
Roberto da Silva Bigonha |
author_facet |
Roberto da Silva Bigonha Gabriel de Godoy Corrêa e Castro |
author |
Gabriel de Godoy Corrêa e Castro |
spellingShingle |
Gabriel de Godoy Corrêa e Castro Geração de compiladores baseada em componentes |
author_sort |
Gabriel de Godoy Corrêa e Castro |
title |
Geração de compiladores baseada em componentes |
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 |
publisher |
Universidade Federal de Minas Gerais |
publishDate |
2014 |
url |
http://hdl.handle.net/1843/ESBF-9P2FVH |
work_keys_str_mv |
AT gabrieldegodoycorreaecastro geracaodecompiladoresbaseadaemcomponentes |
_version_ |
1718847558279757824 |