Primeiro Trabalho
de LC
Prof. José de Oliveira
Guimarães.
UFSCar
Segundo semestre de 2014
Data de entrega: 15/10/14 às 14h (também é a data do
questionário para ambas as turmas).
Grupos de até duas pessoas
para a graduação. Para a pós o trabalho é individual.
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 “genKrakatoa”
(ou algo assim) nas classes da ASA Program, Statement, subclasses de Statement
etc. 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.
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. r.txt (descrito
abaixo) 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 genKrakatoa (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.
- O compilador
deve tomar o nome do arquivo
a ser compilado como entrada,
isto é; para chamá-lo, deveremos digitar
C:\>java –cp
c:\krakatoa\bin comp.Comp ktests\Hello.kra
“ktests\Hello.kra” é o arquivo
a ser compilado. O compilador está no diretório
c:\krakatoa\bin. Deve ser produzido um
arquivo Hello.kra2 no diretório
corrente como
resultado da compilação.
- O compilador
deve produzir como saída um arquivo
texto com nome
igual ao arquivo de entrada
com características que serão descritas a seguir. Este arquivo
deve ter extensão
txt e deve ser
criado no diretório corrente.
Assim, ao chamar o seu
compilador usando
java –cp c:\krakatoa comp.Comp
c:\lc\testes\ok-sin01.kra
o compilador deve produzir um
arquivo ok-sin01.txt no
diretório corrente. Se não
houve erro ao compilar
o programa dado como
entrada, o primeiro caráter
do arquivo de saída (ok-sin01.txt neste exemplo) deve ser
‘0’ (ASCII 48, não ASCII
0). Se houve erro de compilação, o arquivo de saída
deve conter o número da linha
com erro
seguido por espaço em
branco, “:”, espaço em
branco e a descrição do erro,
tudo isso em
uma única linha. Veja um
exemplo de arquivo de saída
produzido quando houve e quando não
houve erro. É necessário emitir apenas e tão somente um único erro. Se
o erro não for no arquivo fonte, como erro de leitura do arquivo de
entrada ou arquivo de entrada inexistente, utilize -1 como número de linha
(veja Comp.java). Após esta linha, coloque a
linha do arquivo de entrada que causou o erro (veja o exemplo). Imprima estas
mesmas informações na saída padrão. Note que o compilador fornecido já
emite erros como pedido. É necessário apenas que você não modifique o que
já está funcionando.
- 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.
- Entregue, junto com o
compilador, o arquivo r.txt que é produzido da seguinte forma:
abra uma janela do DOS e vá até o diretório krakatoa,
onde está o seu compilador. Digite
..\soft\t\test-t1
este arquivo bat produzirá um arquivo r.txt que é um relatório com os
erros do seu programa. Este arquivo deverá ser colocado no zip a ser colocado no Moodle.
- 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 mais alguns
erros cometidos no primeiro semestre
do ano passado;
- não serão
aceitos trabalhos
atrasados.