Está é a página da disciplina Compiladores I, MAB 471, do professor Fabio Mascarenhas, para o semestre de 2018.1. As aulas da disciplina são às segundas e quartas, das 10 às 12 horas.
A avaliação será feita por provas e por pequenos trabalhos práticos. A nota das provas corresponderá a 80% da nota final (8 pontos) e a dos trabalhos a 20% (2 pontos). Serão três provas, uma na metade do período e as outras duas no final, e será feita uma média aritmética das duas maiores notas. Não haverá prova final ou segunda chamada. A média final é 5,0.
P1: 18/04/2018
P2: 06/06/2018
P3: 11/06/2018
Todas as provas serão feitas no mesmo horário e local das aulas.
Os trabalhos práticos correspondem às diferentes fases de um compilador de MiniJava. Os trabalhos podem ser feitos individualmente ou em dupla. As mesmas duplas valerão para todos os quatro trabalhos, exceto em casos de trancamento ou abandono, que serão resolvidos caso a caso.
Cada dupla deverá fazer a especificação dos analisadores léxico e sintático para
a linguagem MiniJava. Baixe o esqueleto do projeto Eclipse
para o trabalho aqui, e leia com atenção os arquivos
scanner.jpage
e parser.jpage
. O arquivo .zip do projeto já inclui cópias do JFlex e do JACC,
com um arquivos .bat para executá-los.
A entrega do trabalho deverá ser feita até as 23:59 do dia 23/05/2018, usando esse
formulário. Mande apenas
um arquivo .zip
contendo três arquivos: o arquivo .jflex
com a especificação
léxica, o arquivo .jacc
contendo a especificação sintática, e um arquivo
README.txt
contendo os nomes dos alunos e qualquer explicação que vocês
queiram acrescentar. O arquivo .zip
deve ter os nomes da dupla no nome do arquivo
(por exemplo,
se o trabalho foi feito pelo João e pela Maria, o arquivo anexado deve ser “minijava_joao_maria.zip”).
Se tiver qualquer dúvida sobre a especificação da linguagem ou o funcionamento dos analisadores é só perguntar por email ou no nosso grupo.
Cada dupla deverá terminar a implementação da análise de tipos para
a linguagem MiniJava. Baixe o esqueleto do projeto Eclipse
para o trabalho aqui, e leia com atenção o arquivo
minijava.jpage
.
A entrega do trabalho deverá ser feita até as 23:59 do dia 13/06/2018, uma
quarta-feira, por esse
formulário.
Mande apenas
um arquivo .zip
contendo dois arquivos: o arquivo TypeVisitor.java
com
o analisador de tipos, e um arquivo
README.txt
contendo os nomes dos alunos e qualquer explicação que vocês
queiram acrescentar. O arquivo .zip
deve ter os nomes da dupla no nome do arquivo
(por exemplo,
se o trabalho foi feito pelo João e pela Maria, o arquivo anexado deve ser “minijava_joao_maria.zip”).
Se tiver qualquer dúvida sobre a especificação da linguagem ou o funcionamento do analisador de tipos é só perguntar por email ou no nosso grupo.
Temos um grupo no Facebook para perguntas e avisos sobre a matéria. Acessem aqui.
O livro texto da disciplina é o “Construindo Compiladores”, de Keith D. Cooper e Linda Torczon, da Editora Elsevier. O título de sua versão em inglês é “Engineering a Compiler”. Ele não está disponível nas bibliotecas da UFRJ, então temos um livro texto alternativo, o “Compiladores: princípios e práticas”, de Kenneth C. Louden, que está disponível na biblioteca do CCMN.
Um bom livro que explica a construção de um compilador usando Java é o “Modern Compiler Implementation in Java”, de Appel e Palsberg. É um bastante sintético, mas que também vai além do assunto coberto no curso.
“Crafting a Compiler with C” de Charles Fischer também tem uma boa cobertura dos aspectos práticos da construção de um compilador, e está disponível na biblioteca do CT e do NCE.
Existe farto material online sobre construção de compiladores, incluindo livros completos. Um bem sintético e com ênfase em construção manual de scanners e parsers recursivos é o livro “Compiler Construction” de Niklaus Wirth, disponível em PDF aqui. Outro livro, mais detalhista, é o “Basics of Compiler Design” de Torben Mogensen, disponível nessa página.
Se conhecer algum outro livro e/ou material e quiser saber quanto à sua aplicabilidade venha conversar comigo, poderei ajudá-lo.
Publicarei slides e notas de aula nessa seção no decorrer do curso.
Podem entrar em contato pelo meu email que responderei assim que possível, ou deixe uma mensagem em nosso grupo de discussão.
Última Atualização: 2018-06-05 18:03