MC910 - Construção de Compiladores

Segundo Semestre de 2009

Turma A

Aulas Atendimento Avaliação Projetos Links Referências Notas
Avisos

Quinta-feira, 23 de dezembro de 2009
As notas finais do curso estão disponíveis aqui. Boas festas a todos.

Quinta-feira, 10 de dezembro de 2009
O Exame final será na sala CB-01 no dia 22/12 as 10h..

Terça-feira, 15 de dezembro de 2009
As notas da Prova 2, Trabalho e Médias estão disponíveis aqui. Aqueles que quiserem olhar a correção da prova 2 devem comparecer no dia 17/12, das 10h as 11h na sala 42 do IC-2.

Quinta-feira, 10 de dezembro de 2009
Alguém esqueceu um celular na minha sala durante as apresentação de trabalho de hoje. Vou deixar na secretaria de graduação com o Wilson..

Sexta-feira, 04 de dezembro de 2009
INSTRUÇÕES PARA APRESENTAÇÃO DO TRABALHO:

  • As apresentações serão na sala 42 do IC-2.
  • A lista de horários para as apresentações se encontra aqui.
  • Devido à grande quantidade de grupos não haverá tolerânica com atrasos. Chegue pelo menos 10min antes de seu horário. Qualquer grupo atrasado terá sua apresentação imediatamente movida para o final do horário naquele mesmo dia.
  • Lembrando que a apresentação deve ser feita por todos os membros do grupo. O não comparecimento no dia marcado de qualquer membro do grupo implicará em nota zero no trabalho para o mesmo.
  • Não há a necessidade de preparação de slides.
  • O grupo deve usar obrigatoriamente o arquivo submetido por email para sua apresentação. É permitido o uso de notebook próprio.
  • A demonstração será feita em uma máquina Linux Ubuntu padrão. Caso seja necessário o uso de bibliotecas especiais, deixe o ambiente de execução preparado na sua área para acesso remoto.

Terça-feira, 24 de novembro de 2009
A submissão do trabalho deve ser feito no dia 26/11/2009 até as 23:59h. Submissões feitas com atraso estão sujeitas a penalidades:

  • Submissões feitas até sábado 28/11/2009 até as 23:59 sofrem 20% de penalidade na nota.
  • Submissões feitas até segunda-feira 30/11/2009 até as 23:59 sofrem 30% de penalidade na nota.
  • NÃO SERÃO ACEITAS SUBMISSÕES APÓS DIA 30/11.

Terça-feira, 24 de novembro de 2009
INSTRUÇÕES DE SUBMISSÃO DO TRABALHO:

  • Os trabalhos devem ser submetidos para o email sandro at ic dot unicamp dot br em um pacote tgz ou zip.
  • O subject do email deve ser "[MC910] Grupo X", onde X é o ID de seu grupo cadastrado no sistema do site.
  • O pacote deve conter os arquivos fontes para seu parser, instruções passo a passo de como compilar e executar o parser e um arquivo .txt com uma breve descrição de sua implementação
  • Essa descrição deve ter uma página, explicando qual ferramenta você adotou para geração do parser, se você implementou tudo que foi pedido na especificação, e quais extensões e/ou alterações você fez na linguagem.
  • Todos os grupos devem fazer uma apresentação do trabalho que será marcada de acordo com o cadastro dos grupos feitos no site, nos dias de aula após a Prova 2 conforme calendário divulgado no início do semestre. O não comparecimento de qualquer membro do grupo na apresentação implica em nota zero no trabalho.

Sexta-feira, 13 de novembro de 2009
Esta disponível o sistema para cadastramento dos grupos para o projeto. Cadastre seu grupo aqui.

Quarta-feira, 28 de outubro de 2009
Esta disponível a especificação do trabalho apresentada na aula de 27/10. Veja em Projetos.

Terça-feira, 27 de outubro de 2009
Estarei apresentando um trabalho em um congresso, por isso não haverá aula de MC910 no dia 29/10 (quinta).

Quinta-feira, 22 de outubro de 2009
As notas da Prova 1 estão disponíveis aqui. A vista de provas será no dia 27/10, durante o horário de aula.

Segunda-feira, 17 de agosto de 2009
· Prof. Tomasz Kowaltowsky costuma deixar no xerox do IA uma cópia de seu livro sobre Implementação de linguagens com autorização para que os alunos tirem xerox.

Segunda-feira, 17 de agosto de 2009
· Página da disciplina no ar. Confira critérios de avaliação e calendário.

Aulas

Turma A
· Ter e Qui: 10-12h, sala CB01

Atendimento


· Ao final das aulas ou em horario de comum acordo agendado por email.

Contato
· Turmas A: Sandro Rigo (sandro AT ic dot unicamp dot br)
· OBS.: Quando enviar um e-mail favor colocar no subject [MC910], caso contrário você corre sério risco de seu email ser filtrado como spam.

Programa

  • Introdução
  • Análise Léxica
  • Análise Sintática
  • Representação Intermediária
  • Registros de Ativação
  • Seleção de Instruções
  • Análise de Longevidade
  • Alocação de Registradores
  • Análise de Fluxo de Dados
  • Coleta de Lixo

Calendário

  • 24/09: Congresso Iniciação Científica
  • 29/09 a 2/10: 40 anos de Computação na Unicamp
  • 13/10: Prova 1
  • 20/10: Avaliação de Cursos
  • 26/11: Entrega do Trabalho
  • 03/12: Prova 2
  • 10/12: Apresentação do Trabalho
  • 15/12: Apresentação do Trabalho
  • 22/12: Exame

Avaliação

Avaliação
A disciplina terá duas provas teóricas e um trabalho prático, onde a média do desempenho será calculada por:
MP = 0,35 * P1 + 0,40*P2 + 0,25*T
Se MP >= 5,0 o aluno aprovou-se. Caso contrário haverá um exame final (EX) e a média final do aluno passará a ser:
MF = (MP+EX)/2

Presença
Será cobrada presença em aula durante todo o semestre.

Fraudes
Qualquer tentativa de fraude nos exames ou nos trabalhos práticos implicará em ZERO na nota correspondente para todos os envolvidos e o cálculo da média passará a ser: M = min(4,0; MP), estando o aluno obrigatoriamente de exame final.

Projetos

Projeto
Especificação dos tokens, da gramática livre de contexto e implementação de um parser para uma linguagem de alto nível chamada "Content Publication Language (CPL)". Esta linguagem é usada para geração de código HTML para um site de notícias.
O trabalho deve ser realizado em duplas ou individualmente. Os grupos ficam livres para escolher qual ferramenta de geração de parser irão utilizar. A sintaxe de definição da gramática para CPL é determinada por cada ferramenta. Veja aqui uma lista de ferramentas existentes. Já tive boas referênicas sobre ANTLR (Java), Bison (C) e PLY (Python).

O arquivo exemplo.cpl apresenta a especificação da linguagem CPL através de um exemplo. Nele aparecem as estruturas válidas da linguagem e as palavras reservadas. O objetivo final, é usar um programa em CPL para gerar um site de notícas como este jornal. Note que a formatação usada neste site é apenas ilustrativa. Cada grupo deve escolher o estilo de formatação que lhe pareça mais adequado, inclusive aplicando o uso de CSS. Note também que o programa exemplo.cpl tem apenas a definição do conteúdo das duas primeiras colunas do jornal.
Cada grupo deve propor extensões para a linguagem CPL, visando torná-la mais poderosa ou flexível em termos de definição e apresentação do conteúdo do jornal. A nota final do trabalho será baseada no funcionamento da especificação básica dada em exemplo.cpl, na qualidade visual e de organização do site produzido E na qualidade das extensões propostas.
Atenção especial às possibilidades de formatação do texto inserido nos campos dos objetos. Essa formatação deve usar o padrão de códigos do wiki da Wikipedia (http://pt.wikipedia.org/wiki/Ajuda:Guia_de_edição/Formatação#Os_c.C3.B3digos_wiki_para_formatar_artigos). O programa exemplo.cpl usa alguns desses códigos de formatação no campo "text" do objeto "headline1".

Os grupos devem OBRIGATORIAMENTE se cadastrar no site da disciplina ANTES da submissão dos trabalhos. NÃO serão aceitas submissões de grupos não cadastrados. Cadastre seu grupo aqui.

Entrega: 26/11/2009.
Apresentações: 10/12 e 15/12, no horário da aula. É obrigatória a presença de todos os componentes do grupo durante a apresentação, sob penalidade de nota zero no trabalho aos ausentes.

Links

Referências Principais

Notas de Aula

Modern Compiler Implementation in Java
Andrew Appel, 2a Edicão

Compiladores : Princípios, Técnicas e Ferramentas
Aho, Sethi & Ullman

Implementação de Linguagens de Programação
Kowaltowski, Editora Guanabara Dois, 1983.