Segundo Trabalho de LC
Data de
entrega do arquivo zip por email e trabalho impresso : 28 de Novembro (Quarta feira
até às 12h),
Data da entrevista:
28 e 29 de Novembro
(quarta e quinta)
Grupos de até duas pessoas.
Os membros do grupo poderão ser
de turmas diferentes.
Em primeiro lugar, pegue o compilador que utilizaremos no
curso: o gcc versão 4.1.0. Como me foi
impossível conseguir o gcc pela página deste compilador, o peguei de http://ftp1.sourceforge.net/dev-cpp/devcpp4.zip.
Este é o zip do Bloodshed Dev C++, um
ambiente de desenvolvimento que
inclui o compilador gcc --- veja a
página do ambiente em http://www.bloodshed.net/dev/.
Tem que ser exatamente este compilador e exatamente esta versão. Senão você e
eu teremos enormes problemas --- o seu compilador poderá funcionar na sua
máquina mas não na minha, ou funcionar para alguns testes e não para outros na
minha máquina. Em resumo: use exatamente o compilador gcc versão 4.1.0. É improvável que uma versão mais nova traga
algum problema, mas é bom não arriscar.
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.
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.
Copie alguns arquivos para o diretório “t”.
Utilize o arquivo test-t2 do diretório t para 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> ..\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.
Envie o trabalho zipado por
email para jose@dc.ufscar.br com o subject
“lc07”, sem as aspas. No zip, inclua os arquivos *.class, *.java
e o arquivo z.txt produzido pela execução do arquivo “t\test-t2” no diretório Krakatoa. NÃO inclua nenhum
outro arquivo (testes,
*.c, *.exe, *.txt, etc). Absolutamente
não envie o trabalho em outro formato
de compressão que não
seja ZIP. Se não conseguir enviar o zip por causa do seu provedor, modifique a
extensão para Z e o envie. O nome do arquivo zip deve ser composto do nome dos
dois integrantes do grupo. O nome que vem antes em ordem alfabética deve vir
antes no nome do arquivo. Assim:
AlbertoSantosDumont-NikolaTesla
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:
O trabalho impresso deve ser deixado no escaninho do
professor com a folha de capa.
Trabalhos sem a folha
de capa não serão
aceitos.
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.
- Use o interpretador Java
(Java SE Runtime Environment) versão 1.6.0_02.
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.