Primeiro Trabalho de LC

 

Prof. José de Oliveira Guimarães.

UFSCar

Segundo semestre de 2007

 

Data de entrega: 17 de Outubro até às 12h. Data das entrevistas: 17 (quarta) e 18 (quinta) de Outubro.

 

 

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 em HTML. Este código html gerado deve ter as seguintes características:

 

- para cada classe A do código Krakatoa, gere um arquivo A.htm em fonte Courier new tamanho 12;

- no texto html gerado, onde aparecer o nome de uma classe, coloque um link para o arquivo correspondente. Veja o código em Krakatoa e os códigos em html correspondentes (A,  B e Program);

 

O código html gerado deve ser idêntico ao original a menos de espaços, ordem de declaração de variáveis e métodos e comentários (que não precisam aparecer). 

 

Devem existir métodos “genHTML” nas classes da ASA Program, Statement, subclasses de Statement, etc.

 

O seu compilador deve passar nos testes semânticos fornecidos na página Material de Aula. E, naturalmente, em todos os testes léxicos, sintáticos e de geração de código que começam com ok.

 

            Toda a análise sintática e léxica está feita, exceto para métodos e variáveis estáticos.

 

            Entregue uma listagem do trabalho juntamente com a folha de capa. Trabalhos sem esta capa não serão aceitos. Envie o trabalho zipado por email para jose@dc.ufscar.br com o subject  “LC07”, sem as aspas. No zip, inclua os .class além dos .java. NÃO inclua nenhum outro arquivo. Absolutamente não envie o trabalho em outro formato de compressão que não seja ZIP. Veja observações gerais sobre todos os trabalhos na página Trabalhos. E leia as Observações.

 

        Imprima o trabalho em fonte courier. Assim podemos ver ser a tabulação está correta. Para quem não sabe, letras em courier ocupam sempre o mesmo espaço horizontal, independente do tamanho da letra. O mesmo não ocorre com outras fontes, onde o “i”, por exemplo, ocupa menos espaço do que o “m” e outras letras mais gordinhas.

 

Este compilador deve ter obrigatoriamente as características descritas abaixo.

  • O compilador deve construir uma ASA de forma semelhante à ensinada na disciplina Construção de Compiladores. Devem existir métodos genHTML (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 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.htm  no diretório corrente como resultado da compilação. Note que o analisador sintático fornecido cria o arquivo Hello.htm. Você precisa criar a ASA e fazer os métodos genHTML;
  • O compilador deve produzir como saída, além dos arquivos em html, 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 enviado junto com o compilador na data da entrega do trabalho.
  • Faça todos os testes correspondentes aos possíveis erros léxicos, sintáticos e semânticos.
  • 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 mais alguns erros cometidos no primeiro semestre do ano passado;
  • não serão aceitos trabalhos atrasados.