Primeiro Trabalho
de LC
Prof. José de Oliveira
Guimarães.
UFSCar
Segundo semestre de 2015
Data de entrega: 07/10/14 às 14h
Grupos de até duas pessoas para a graduação.
Descrição do trabalho: a partir
do analisador sintático da linguagem Krakatoa, faça
um compilador
que constrói a ASA, faz a análise
semântica e gera código
idêntico ao original, exceto que sem os comentários. Podem existir pequenas
diferenças entre o código gerado e o original, como uma declaração "int a, b,
c;" ser desdobrada em "int a; int b; int
c;". O código gerado deve estar corretamente indentado.
Devem existir métodos “genKra” (ou
algo assim) nas classes da ASA Program, Statement, subclasses de Statement
etc. Estes métodos devem gerar código em Krakatoa. O seu compilador
deve passar nos
testes léxicos, sintáticos e semânticos fornecidos na página Material de Aula. Toda a análise
sintática e léxica já
está feita, exceto para
métodos e variáveis estáticos e classes e métodos finais.
Coloque no Moodle
um arquivo zip contendo o diretório do seu trabalho.
Dentro deste diretório deve existir um diretório chamado “bin”
com todos os arquivos *.class do seu compilador. O
nome do arquivo zip deve ser composto pelos nomes dos
integrantes do grupo em ordem alfabética da seguinte forma:
AlbertoSantosDumont-IsaacNewton.zip
Ao descomprimir este arquivo zip
deve ser criado um diretório “AlbertoSantosDumont-IsaacNewton”
(muito importante). Veja outras observações na folha de capa. Não se
esqueça de colocar a folha de capa junto com o trabalho. NÃO inclua nenhum
outro arquivo que não seja *.java, *.class e a folha de capa
neste arquivo zip.
Este compilador deve ter
obrigatoriamente as características
descritas abaixo.
- O compilador
deve construir uma ASA de forma
semelhante à ensinada na disciplina Compiladores.
Devem existir métodos genKra (ou algo
parecido) na maioria das classes da ASA
para a geração
de código.
- A classe
principal do compilador
deve se chamar “Comp”
e estar em um pacote chamado comp. A classe
principal é aquela com o método
main. Na correção o professor irá copiar uma
classe "Comp" dele para o diretório
"src\comp".
Esta classe Comp será responsável por chamar o
seu compilador e produzir o relatório com os erros.
- Não
modifique o modo como os erros são sinalizados. Utilize sempre a variável signalError de Compiler e Lexer para sinalizar os erros.
- Todos os arquivos
devem ter um comentário inicial com o nome dos integrantes do grupo. Sem
este comentário o trabalho não será aceito.
- Faça todos os testes
correspondentes aos possíveis erros
léxicos, sintáticos e semânticos.
Observações gerais sobre
o trabalho:
- qualquer parte
do trabalho poderá ser copiada de qualquer
grupo, desde que
este fato seja escrito
na folha de capa do trabalho.
Trabalhos com um
número significativo de trechos iguais
sem a devida observação
na capa receberão zero. A nota do trabalho
diminui com a quantidade de trechos
copiados. De qualquer forma, não
mais do que 10% do código
pode ser copiado, mesmo com
observações na folha de capa.
Estes 10% se referem aos trechos feitos
por você,
não ao total do compilador,
cuja maior parte
foi fornecida na página da
disciplina;
- faça o seu trabalho
utilizando corretamente os princípios de orientação a objetos.
Procure o professor em dúvida;
- não serão
aceitos trabalhos
atrasados.