Universidade Federal do Ceará

Centro de Ciências

Departamento de Computação

Programa de Disciplina

Identificação

Código: CK017 Período: 99/2 Créditos: 06 Carga Horária: 90

Nome: Construção de Compiladores I

Objetivo: Introduzir os principais conceitos de construção e projeto de compiladores.

Professor: Riverson Rios

 

 

Ementa

  1. Introdução à Compilação 2) Análise Léxica 3) Análise Sintática 4) Análise Semântica

5) Geração de Código 6) Otimização de Código

 

 

Conteúdo Programático

  1. Introdução à compilação
    1. Compiladores
    2. O processo de compilação
    3. Análises léxica, sintática e semântica
    4. Geração e otimização de código
  2. Análise Léxica
    1. Tokens e lexemas
    2. Tabelas de símbolos
    3. Expressões regulares
    4. Automâtos finitos
      1. DFA
      2. NFA
    5. Equivalência entre autômatos e expressões regulares
    6. Geração automática de analisadores léxicos
      1. Flex
  3. Análise Sintática
    1. Gramáticas
      1. A classificação de Chomsky
      2. Produções
    2. Gramáticas regulares
      1. Equivalência com expressões regulares
    3. Gramáticas livres de contexto
      1. Ambigüidade
      2. Árvore de derivação
      3. Gramáticas recursivas à esquerda
      4. Eliminação de produções-Î
      5. Fatoração
      6. BNF
    4. Analise sintática descendente
      1. Analisador recursivo descendente
      2. Tabelas LL(1)
      3. Cálculo de First e Follow
    5. Analise sintática ascendente
      1. Resolução de conflitos
      2. Grmáticas LR
    6. Geração automática de analisadores sintáticos
      1. bison
  4. Análise Semântica
    1. Sistema de tipos
    2. Compatibilidade de tipos
    3. Equivalência de tipos
    4. Conversão de tipos
    5. Overloading
    6. Polimorfismo
  5. Geração de código
    1. Tradução dirigida pela sintaxe
    2. Representação interna
    3. Comandos estruturados
    4. Alocação de memória
  6. Otimização de memória
    1. Otimização local vs. global
    2. Otimização de loops
    3. Otimização do programa-fonte

 

 

 

Programa

#

Data

Conteúdo

 

Ago

 

1

23

Introdução - Conceitos básicos

2

25

O Processo de compilação – Fases

3

27

Análise léxica, sintática e semântica e geração de código

4

30

Análise léxica

 

Set

 

4

1

Tokens e lexemas – Tabela de símbolos

5

3

Expressões regulares

6

6

Autômatos finitos – DFAs

7

8

Autômatos finitos – DFAs

8

10

Autômatos finitos – NFAs

9

13

Autômatos finitos – NFAs

10

15

Transformando DFAs em NFAs e vice-versa

11

17

Equivalência entre autômatos e expressões regulares

12

20

Exemplo de um analisador simples em Pascal

13

22

Geração automática de analisadores léxicos

14

24

Introdução ao Flex

15

27

Exemplos de uso do Flex

16

29

Flex como uma função do analisador sintático

 

Out

 

17

1

Análise sintática – Gramáticas – A classificação de Chomsky – Produções

18

4

Gramática Regular – Equivalência com expressões regulares

19

6

Gramática Livre de Contexto – Ambigüidade – Árvores de derivação

20

8

Gramática Recursiva à Esquerda – Eliminação da recursividade à esquerda

21

11

Eliminação de produções-Î – Fatoração

22

13

Gramática livre de contexto vs. gramática regular – BNF

23

15

1a. Prova

24

18

Correção da 1a. Prova

25

20

Analisadores sintáticos ascendentes e descendentes

26

22

Analisador recursivo descendente para expressões simples

27

25

Analisador recursivo descendente para expressões simples - Geração de código

28

27

Gramáticas LL(1)

29

29

Analisador descendente preditivo dirigido por tabela LL(1)

 

Nov

 

24

1

Cálculo de First e Follow

25

3

Analisador descendente preditivo – mensagens de erro

26

5

Analisador descendente preditivo - geração de código

27

8

Analisador descendente preditivo - geração de código

28

10

Analisadores ascendentes – handles

29

12

Análise ascendente com operações shift-reduce

 

15

Feriado - Proclamação da República

30

17

Análise ascendente - Resolução de conflitos

31

19

Análise ascendente – Mensagens de erro

32

22

Geradores de analisadores – bison

33

24

Exemplos de uso de bison

34

26

Gramáticas LR – Analisadores para gramáticas LR

35

29

Gramáticas SLR– Analisadores para gramáticas SLR

 

Dez

 

36

1

Gramáticas LALR– Analisadores para gramáticas LALR

37

3

Análise semântica – Sistemas de tipos

38

6

Compatibilidade e equivalência de tipos

 

8

Feriado - Dia de Nossa Senhora da Conceição

39

10

Conversão de tipos

40

13

Overloading e polimorfismo

41

15

Geração de código - Tradução dirigida pela sintaxe – Representação intermediária

42

17

Geração de código para comandos estruturados - Alocação de memória

43

20

Otimização de código – Otimização local vs. global

44

22

Otimização de expressões aritméticas

 

23-31

Recesso

 

Jan

 

45

3

Otimização de loops

46

5

2a. prova

47

7

Correção da 2a. prova – Revisão