COMPILADORES – 2008.1 - Projeto

Prof. Marcus Salerno de Aquino

 

 

O projeto consiste na construção de um compilador para um subconjunto de uma linguagem de programação (inventada pelos alunos, obedecendo os comandos de uma linguagem de programação convencional).

 

 

O subconjunto da linguagem definida para cada projeto deverá conter pelo menos:

 

·       declaração de variáveis simples (inteiro e cadeia de caracteres – do tipo “string”) e estruturadas (vetores de inteiros e de cadeias de caracteres), sempre globais;

·       declaração de subprogramas (métodos), sem passagem de parâmetros;

·       comandos de entrada e saída (pelo menos um de cada);

·       um comando de fluxo de controle, com o ciclo dependente de uma condição de parada (do tipo while ou repeat);

·       um comando de decisão simples (if-then-else).


Primeira Etapa: Especificação

 

A primeira etapa da construção do compilador será dividida nas seguintes tarefas:

 

·       Definição do conjunto de símbolos básicos da linguagem;

·       Explicitação das regras léxicas que serão seguidas (como se forma e que tamanho máximo tem um identificador, uma constante caracter, uma constante cadeia, etc.);

·       Especificação das regras gramaticais da linguagem a ser analisada.

 

Um relatório contendo as informações acima elencadas deverá ser entregue (em papel e por e-mail)  na data especificada.

 

 

Segunda Etapa: Analisador Léxico

 

A segunda etapa consiste na implementação do analisador léxico correspondente ao especificado na primeira etapa. Pode ser dividida nas seguintes tarefas:

 

·       criação da gramática regular descrevendo os símbolos básicos;

·       criação dos autômatos finitos descrevendo os símbolos básicos.

·       construção do analisador léxico correspondente que, numa primeira versão, será ativado sucessivamente por um programa principal para o qual retornará o símbolo lido com o respectivo código.

 

O programa fonte e arquivos exemplo (pelo menos 3) deverão ser enviados por e-mail na data de entrega da implantação da segunda etapa do projeto. Se houver mudança significativa em relação à primeira etapa, um relatório de implementação da segunda etapa deverá ser entregue (em papel e por e-mail).

 

Demais Etapas: Analisador Sintático e Geração de Código

 

As outras etapas consistem na implementação dos seguintes módulos do compilador:

 

·       Analisador sintático: poderá ser usado o descendente recursivo, o descendente preditor, ou o ascendente de precedência simples.

·       Analisador Semântico e Tabela de Símbolos;

·       Tratamento e Recuperação de Erros;

·       Geração de Código.

 

O programa fonte devidamente documentado (pode ser utilizado o JavaDoc) e arquivos exemplo (pelo menos 3) deverão ser enviados por e-mail em cada etapa do projeto.

 

 

Datas

 

As datas para entrega e avaliação de cada etapa do projeto estão definidos na página da disciplina.