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.