Você está na página 1de 5

Compilador da linguagem Portugol para a linguagem de

programao C
Leandro da Cruz Farias1 , Raimundo Corra de Oliveira1
1
Escola Superior de Tecnologia Universidade do Estado do Amazonas (UEA)
Av. Darcy Vargas, 1200, Parque 10 de Novembro 69.065.020 Manaus AM Brasil
{leandro.da.cruz.farias,rcorrea.oliveira}@gmail.com

Resumo. Este artigo contm a proposta de Trabalho de Concluso de Curso


que ser apresentado para obteno do ttulo de Bacharel em Engenharia de
Computao na Universidade do Estado do Amazonas. O trabalho em questo
um compilador que realiza a traduo de um programa escrito em Portugol
para um programa escrito em C. O analisador lxico ser gerado com o Flex
e o analisador sinttico ser gerado com o Bison. A partir disso, ser possvel
realizar a anlise semntica e o tratamento de erros. Aps validar o programa
fonte, ser gerado um programa escrito na linguagem alvo, que corresponde a
linguagem C.

1. Introduo
O compilador o programa responsvel pela leitura de um programa, que est escrito em
um linguagem de origem, e pela traduo deste para um programa escrito em uma lingua-
gem alvo, segundo [Alfred V. Aho and Ullman 1995]. Outra funo importante consiste
em informar o programador dos erros encontrados no programa fonte.
A compilao dividida em duas partes: anlise e sntese. A anlise compreende
a anlise lxica, sinttica e semntica. J a sntese encarregada de gerar o algoritmo na
linguagem alvo.
A anlise lxica consiste em identificar os caracteres que fazem parte da gramtica
da linguagem. A leitura dos caracteres gera um agrupamento de tokens, que so as pala-
vras reservadas da linguagem. Enquanto que a anlise sinttica responsvel por verificar
a ordenao dos tokens para garantir a coeso entre eles. E, por ltimo, tem-se a anlise
semntica, que valida se uma instruo est de acordo com a semntica da linguagem,
alm de obter os tipos dos dados, identificar os operadores e operandos de expresses que
sero utilizados na gerao do cdigo.
Diante disso, pretende-se desenvolver um compilador que realize a leitura de algo-
ritmos escritos em linguagem Portugol e os traduza para algoritmos escritos em linguagem
C.

2. Objetivo Geral
Desenvolver um compilador que faa a traduo de algoritmos escritos em Portugol para
algoritmos em linguagem C.
2.1. Objetivos Especficos
Identificar todas as palavras reservadas da linguagem Portugol;
Utilizar a ferramenta Flex para gerar o analisador lxico;
Utilizar a ferramenta Bison para gerar o analisador sinttico;
Implementar o analisador semntico;
Implementar o tratamento de erros.

3. Justificativa
Com o intuito de criar um compilador, preciso aprofundar-se nas reas de conhecimento
do curso de Engenharia de Computao, essencialmente nas disciplinas de Compiladores
e Fundamentos de Engenharia de Computao II.
A disciplina de Compiladores agregou conhecimentos relacionados ao uso das
ferramentas Flex e Bison. Utilizando o Flex possvel gerar o analisador lxico de acordo
com as regras definidas pela gramtica da linguagem de origem.
E o analisador sinttico gerado com o Bison por meio da definio da sintaxe da
linguagem.
Ao combinar estas duas ferramentas, possvel analisar se cada caractere de um
programa vlido, validar a coeso destes caracteres e verificar a semntica presente em
cada instruo. E durante cada fase dessa anlise, a deteco de erros executada por
meio do tratador de erros, segundo [Alfred V. Aho and Ullman 1995]. Alm disso, uma
tabela de smbolos criada para que os tokens e seus atributos sejam armazenados, e
assim seja possvel utilizar estes dados para a validao do cdigo.
Vale ressaltar que a tabela de smbolos uma estrutura de dados, sendo assim de
suma importncia o uso dos conhecimentos adquiridos na disciplina Estruturas de Dados.
Em vista disso, o projeto deste compilador requer conhecimentos relevantes do
curso em questo e prope uma ferramenta de compilao que ajude a entender as sintaxes
do Portugol e C.

4. Metodologia
Pretende-se usar a ferramenta Flex para gerar o analisador lxico, assim ser preciso de-
clarar os tokens da linguagem Portugol e definir as aes que sero executadas ao identi-
ficar um token.
Aps a implementao do analisador lxico, ser a vez de criar o analisador sin-
ttico com a ferramenta Bison. A primeira parte consiste em definir quais sero os iden-
tificadores que correspondem aos tokens inseridos no analisador lxico. Aps isso sero
implementadas as regras de sintaxe da linguagem Portugol. A medida que as regras so
validadas, os tokens so armazenados na tabela de smbolos, que consistir em um tabela
hash.
E com base na anlise sinttica, a anlise semntica ser realizada para confirmar
a validade semntica da instruo e para gerar o cdigo-alvo. Vale ressaltar, que em todas
estas fases de anlise ser necessrio identificar os erros e inform-los ao usurio, por isso
um tratador de erros ser construdo.
Simultaneamente a anlise sinttica e semntica, as instrues so traduzidas para
a linguagem alvo, se contemplarem as regras claro, e armazenadas em uma estrutura de
dados do tipo fila, assim, aps o trmino da leitura do programa de origem, os elementos
da fila sero retirados um a um para que o contedo de cada um seja escrito em um novo
arquivo com extenso .c, que caracterizada um documento escrito na linguagem C.
Diante deste processo, ser possvel traduzir um programa escrito em Portugol
para um programa em C.

5. Cronograma
As atividades a serem realizadas no processo de desenvolvimento deste trabalho se en-
contram detalhadas na Figura 1.
Ms - 2014

Maro Abril Maio Junho Julho

Definio do tema do TCC 100% complete

Estudo sobre Compiladores e linguagens Portugol e C 100% complete

Estudo do Flex e Bison 100% complete

Entrega da proposta de TCC 100% complete

Definir os tokens da linguagem Portugol 0% complete

Implementar as aes do analisador lxico ao identificar um token 0% complete

Implementar o tratamento de erros no analisador lxico 0% complete

Definir os identificadores que correspondem aos tokens inseridos no analisador lxico 0% complete

Implementar as regras de sintaxe da linguagem Portugol 0% complete

Implementar o tratamento de erros no analisador sinttico 0% complete

Implementar estruturas de dados: tabela hash e fila 0% complete

Implementar o analisador semntico 0% complete

Implementar o tratamento de erros no analisador semntico 0% complete

Inserir as instrues traduzidas na estrutura de dados do tipo fila 0% complete

Realizar testes 0% complete

Construo do artigo do TCC 0% complete

Defesa do Trabalho de Concluso de Curso 0% complete

28/03

Figura 1. Cronograma de Atividades


Referncias
Alfred V. Aho, R. S. and Ullman, J. D. (1995). Compiladores Principios, Tcnicas e
Ferramentas. LTC - Livros Tecnicos e Cientificos Editora S.A.

Você também pode gostar