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.