CI211 - Construção de Compiladores

CRÉDITOS: 3       Aulas Práticas: 30 horas       Aulas Teóricas: 30 horas

Carga Horária: 60 horas

Ementa: Gramáticas. Automatos. Computabilidade. Análise lexica. Análise sintática. Geração de código. Recuperação de erros. Compiladores de compiladores.

Objetivo: Propiciar o entendimento dos fundamentos de linguagens de programação e dos conceitos que orientam o seu projeto. Estudar métodos e ferramentas para a implementação de processadores de linguagens de programação.

Pré-requisito(s): CI059 - Introdução à Teoria da Computação

Programa:

    Visão histórica, processadores de linguagens, tipos de tradutores. Arquitetura de um compilador. Análise Léxica. Especificação de um analisador léxico. Lex, um gerador de analisadores léxicos. Análise Sintática. Gramáticas para linguagens de programação. Tipos de análise sintática. A função do analisador sintático; Gramáticas. Construcao de conjuntos PRIMEIROS, SEGUINTES, e PREDICT. Análise sintática descendente. Linguagens LL(1). Construção de analisadores sintáticos recursivos descendentes. Análise sintática ascendente. Metodo LR. Linguagens LR(1). Método SLR(1); Yacc/Bison, um gerador de analisadores sintáticos. Análise Semântica. Tipos e escopo. Tradução dirigida por sintaxe. Gramáticas de Atributos. Geração de código.

Bibliografia:

    A V Aho, R Sethi, J D Ullman. Compilers - Principles, and Tools. Addison-Wesley, 1995. T Kowaltowski. Implementação de Linguagens de Programação. Ed. Guanabara Dois.