Primeiro Trabalho de LC

 

Prof. José de Oliveira Guimarães.

UFSCar

Segundo semestre de 2015

 

Data de entrega: 07/10/14 às 14h

 

Grupos de até duas pessoas para a graduação.

 

Descrição do trabalho: a partir do analisador sintático da linguagem Krakatoa, 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. Podem existir pequenas diferenças entre o código gerado e o original, como uma declaração  "int a, b, c;"  ser desdobrada em "int a; int b; int c;". O código gerado deve estar corretamente indentado.

 

Devem existir métodosgenKra” (ou algo assim) nas classes da ASA Program, Statement, subclasses de Statement etc. Estes métodos devem gerar código em Krakatoa. 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 está feita, exceto para métodos e variáveis estáticos e classes e métodos finais.

 

            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 em ordem alfabética da seguinte forma:
            AlbertoSantosDumont-IsaacNewton.zip

Ao descomprimir este arquivo zip deve ser criado um diretório “AlbertoSantosDumont-IsaacNewton” (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 e a folha de capa neste arquivo zip.

 

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 genKra (ou algo parecido) na maioria das classes da ASA para a geração de código.
  • A classe principal do compilador deve se chamarComp” e estar em um pacote chamado comp. A classe principal é aquela com o método main. Na correção o professor irá copiar uma classe "Comp" dele para o diretório "src\comp". Esta classe Comp será responsável por chamar o seu compilador e produzir o relatório com os erros.
  • Não modifique o modo como os erros são sinalizados. Utilize sempre a variável signalError de Compiler e Lexer para sinalizar os erros.
  • Todos os arquivos devem ter um comentário inicial com o nome dos integrantes do grupo. Sem este comentário o trabalho não será aceito.
  • 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 trabalhos atrasados.