Segundo Trabalho de
LC
 
Prof. José de Oliveira
Guimarães.
UFSCar
Segundo semestre de 2010
 
Data de entrega: até o dia do primeiro questionário.
 
Grupos de até duas pessoas.
 
Descrição do trabalho: a partir
do analisador sintático da linguagem Krakatoa fornecido neste site, 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.
 
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 da seguinte forma: 
           
AlbertoSantosDumont-AlbertEinstein.zip
Ao descomprimir este arquivo zip deve ser criado um diretório
“AlbertoSantosDumont-AlbertEinstein” (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. Veja observações
gerais sobre todos
os trabalhos na página Trabalhos.
E leia as Observações.
 
 
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 também 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.
     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.
- 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
 ..\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.