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.