Segundo Trabalho de LC
Grupos de até duas pessoas.
Data da entrega: 03/12/14 às 14h (data do segundo questionário).
O trabalho consiste na geração de código de Krakatoa para C. Utilize o artigo “Geração de Código em C para Krakatoa”. O código gerado em C deve estar corretamente identado. Pegue a última versão do compilador gcc, que será utilizado para compilar o código gerado em C.
Os programas em C resultantes da compilação Krakatoa-C deverão ser compilados no gcc como na seguinte linha de comando do DOS:
gcc –ansi –Ic:\ArqProg\dev\Include -o exem.exe exem.c
O diretório c:\ArqProg\dev\Include é onde estão os arquivos *.h do gcc.
Você já deve ter arquivos test-t2.bat, 30enters.txt e sixnum.txt no diretório “t”. Utilize test-t2 para testar o seu compilador. Mas antes disto, abra este arquivo em um editor de texto e modifique-o em dois pontos:
Não modifique absolutamente mais nada no arquivo “test-t2.bat”. Senão eu não conseguirei testar o seu compilador.
Em uma janela do DOS, faça o diretório Krakatoa o diretório corrente e chame test-t2:
C:\voce\Krakatoa>..\soft\t\test-t2
Será produzido um arquivo z.txt com o resultado dos testes. Confira se este arquivo foi produzido corretamente. Implementações incorretas do comando write de Krakatoa fazem com que este arquivo z.txt fique ilegível para humanos. Em resumo, implemente write exatamente como está descrito no manual da linguagem.
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 na ordem alfabética da seguinte forma:
AlbertoSantosDumont-NicolaTesla.zip
Ao descomprimir
este arquivo zip deve ser criado um diretório “AlbertoSantosDumont-NicolaTesla” (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.
O
arquivo zip, ao ser descomprimido dentro de um
diretório C:\t2, deve criar um diretório com os nomes completos dos
integrantes do grupo (algo como um diretório AlbertoSantosDumont-NicolaTesla,
o mesmo nome do zip). Dentro deste diretório, o winzip deve criar os diretório AST, Comp
e Lexer. Veja o exemplo:
Este compilador deve ter obrigatoriamente as características descritas abaixo.
· A geração de código deverá ser feita em métodos nas classes da ASA;
· A classe principal do compilador deve se chamar “Comp” e estar dentro do pacote comp, no diretório 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 algo do tipo
C:\>java
–cp c:\krakatoa comp.Comp ktests\Hello.kra
“ktests\Hello.kra” é o arquivo a ser compilado. O compilador está
no diretório c:\krakatoa. Deve
ser produzido um arquivo Hello.c no diretório corrente como
resultado da compilação. Repetindo: o arquivo em C deve ser produzido no
diretório corrente, não no diretório em que está o arquivo de
entrada, Hello.kra.
·
O compilador deve produzir como saída, além do
arquivo em linguagem c, 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 .java devem ter um comentário inicial com o nome dos integrantes do grupo. Sem este comentário o trabalho não será aceito.
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.