Trabalhos de Construção de Compiladores

Segundo Semestre de 2002

Prof. José de Oliveira Guimarães

Universidade Federal de São Carlos - SP

            Nesta disciplina utilizaremos a linguagem Simples, descrita no artigo “A Linguagem Simples”  ( ps ) ( pdf ). Para fazer os trabalhos, utilize o Guia de Correção dos Trabalhos.

            Primeiro Trabalho: construção de um analisador léxico, sintático e geração de código em Java para a linguagem Simples. Data de entrega: 14 de Novembro de 2002. Utilize esta capa.

            Segundo Trabalho: construção do analisador semântico para Simples. Data de entrega: 10 de Janeiro de 2003. Utilize esta capa.

            Terceiro Trabalho: a construção de um gerador de código cuja saída é C. A tradução de Simples para C é descrita no artigo “Geração de Código em C para Simples”. Tão logo vocês terminem o segundo trabalho será dada uma aula explicativa sobre o terceiro trabalho. Data de entrega: 7 de Fevereiro de 2003.

            A média final será calculada como MF = T1*p1 + T2*p2 + T3*p3, onde p1, p2 e p3 são os pesos dos trabalhos. A princípio todos os trabalhos terão pesos iguais.

 

Observações técnicas 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;
  • o trabalho deverá produzir um arquivo texto chamado “result.txt” cujo primeiro   caráter deve ser ‘0’ (ASCII 48) se houve erro de compilação ou ‘1’ (ASCII 49) caso contrário;
  • o nome do compilador que você fazer deverá ser “comp”, obrigatoriamente;
  • o trabalho deverá ser feito em Java. O programa deverá tomar o nome do arquivo a ser compilado como entrada, isto é; ele deverá ser chamado como
           C:\>java comp Hello.s

onde “comp” é o nome do compilador que você fez e “Hello.s” é o nome do programa a ser compilado. Se houver erros, estes deverão ser dirigidos à saída padrão;

  • a geração do código deverá ser feita para arquivos com os mesmos nomes das classes do arquivo de entrada, como Java exige.  Assim, se o programa acima produz classes (em Java) chamadas “class_Hello”   e “class_Program”, o código para estas classes deverá ser colocado em “class_Hello.java”  e “class_Program.java”;
  • naturalmente, utilize uma árvore de sintaxe abstrata orientada a objetos como foi dado no primeiro semestre;
  • entregue a listagem do trabalho em papel. E envie o trabalho para jose#dc.ufscar.br (troque # por @) com o subject ou assunto do email como “lc02”, sem as aspas e tudo em minúsculo. Naturalmente, comprima os arquivos em um .zip;
  • na impressão do trabalho, utilize a fonte courier;
  • os grupos podem ser de até três elementos;
  • todos os grupos farão o trabalho utilizando o método recursivo descendente, sem uso de ferramentas;
  • entregue o trabalho com a capa dada na página da disciplina. Absolutamente não serão aceitos trabalhos sem que as questões desta capa estejam respondidas;
  • se houver tempo, depois de entregue o trabalho, o professor fará uma entrevista com um ou todos os elementos do grupo. Se for com um, haverá um sorteio para definir quem é. Esta entrevista será determinante para a nota do trabalho;
  • 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. Leia o Guia de Correção de Trabalhos, que pode ser obtido na página da disciplina;
  • não serão aceitos trabalhos com mais de uma semana de atraso. A princípio, descontaremos um ponto por cada dia de atraso.