Você está na página 1de 21

INE5317

Ling uag ens Formais e


C ompiladores

Ricardo Azambuja Silveira


INE-CTC-UFSC
E-Mail: silveira@inf.ufsc.br
URL: www.inf.ufsc.br/~silveira
Plano de Ensino
● OBJETIVO GERAL:
– Estudar a teoria das linguagens formais visando sua
aplicação na especificação de linguagens de
programação e na construção de compiladores.

09/13/06 Prof. Ricardo Silveira 2/21


Plano de Ensino
● OBJETIVOS ESPECÍFICOS:
– Dar uma visão geral do processo de compilação sob o
ponto de vista de implementação.
– Dar uma visão geral da Teoria da Computação sob a
ótica da Teoria das Linguagens Formais.
– Dar ao aluno noções de linguagens formais e suas
representações.
– Estudar autômatos e gramáticas, enfatizando seus
aspectos teóricos e suas aplicações.
– Estudar as técnicas formais de análise sintática.

09/13/06 Prof. Ricardo Silveira 3/21


Programa
1)Introdução: Compiladores, Teoria da computação. Teoria das
linguagens formais. 8hs
2)Gramáticas: Motivação. Definição formal. Derivação e
redução. Sentença, forma sentencial e linguagens. Tipos de
gramáticas. Sentença vazia. Recursividade das G.S.C.
18hs
3)Autômatos finitos: Determinísticos (AFD) e Não
Determinísticos (AFND). Transformação de AFND para
AFD. Relação entre AF e GR. Minimização de AFD.
Conjuntos regulares e Expressões Regulares.
Implementação de AF. Propriedades e problemas de decisão
das L.R. Aplicações de A.F. e E.R. 16hs

09/13/06 Prof. Ricardo Silveira 4/21


Programa
4)Gramáticas livre de contexto (GLC) e autômatos de pilha
(PDA): Introdução. Árvore de derivação. Formas de derivação
em GLC. Gramática ambígua. Transformações em GLC.
Tipos especiais de GLC. PDA. Equivalência entre PDA e
GLC. Propriedades e problemas de decisão das LLC.
Aplicações. 14Hs
5)Análise Sintática: Introdução. Classes de analisadores.
Analisadores ascendentes e descendentes: Estudo das
principais técnicas existentes. 16hs

09/13/06 Prof. Ricardo Silveira 5/21


Cronograma
DATA ASSUNTO
13/09 Plano de Ensino – Conceitos Básicos
15/09 Estrutura geral doscompiladores
20/09 Introdução a Teoria da Computação
22/09 Gramaticas
27/09 Automatos Finitos
29/09 Automatos Finitos
04/10 Conjuntos Regulares e Expressões Regulares
06/10 Conjuntos Regulares e Expressões Regulares
11/10 Gramaticas regulares
13/10 EXERCICIOS
18/10 Prova I:
20/10 Gramaticas regulares
25/10 Gramaticas regulares
27/10 Gramaticas regulares
01/11 Gramaticas regulares
03/11 EXERCÍCIOS
08/11 Automatos finitos com saída
10/11 Automatos finitos com saída

09/13/06 Prof. Ricardo Silveira 6/21


Cronograma
DATA ASSUNTO
15/11 FERIADO
17/11 Linguagens livres de contexto
22/11 Linguagens livres de contexto
24/11 Linguagens livres de contexto
29/11 Propriedades das Linguagens Livre de Contexto
01/12 Propriedades das Linguagens Livre de Contexto
06/12 EXERCÍCIOS
08/12 PROVA II
02/02 Análise Sintática
07/02 Análise Sintática
09/02 Análise Sintática
14/02 Análise Sintática
16/02 Entrega do trabalho
21/02 Feriado
23/02 Feriado
28/02 Tira dúvidas
02/03 Recuperação

09/13/06 Prof. Ricardo Silveira 7/21


Avaliação
● Critérios
– Será aprovado na disciplina o aluno que obtiver
frequência superior a 75% e média final igual ou superior
a 6.0 através da seguinte fórmula:
● MF = (P1 + P2 + T) / 3
● onde: T = (T1 + T2 + 2TP) / 4
– Recuperação: Se MF for maior ou igual 3 e menor que 6,
o aluno poderá fazer uma prova de recuperação onde
● NF= (MF + NR)/2. Caso contrário, NF = MF.

09/13/06 Prof. Ricardo Silveira 8/21


Bibliografia
1. FURTADO, O. J. V. Apostila de Linguagens Formais e
Compiladores – versão 2 - UFSC, 2002.
2. WOOD, D. Theory of Computation. Ed. John Wiley & Sons,
1987.
3. AHO, A. V., SETHI, R.,ULLMAN, J. D.. Compiler-Principles,
Techniques and tools. Ed. Addison-Wesley, 1986.
4. HOPCROFT, J. E., ULLMAM, J. D. Formal Languagens and
Their Relations to Automata. Addison-Wesley, 1969.
5. HOPCROFT, J. F., ULLMAN, J. D.. Introduction to Automata
Theory, Languagens and Computation. Ed. Addison-Wesley,
1979.

09/13/06 Prof. Ricardo Silveira 9/21


Bibliografia
6. SUDKAMP, T. A. Languages and Machines – An Introduction to
the Theory of Computer Science, 2. edição, Ed. Addison
Wesley, 1997.
7. MENEZES, P. B. Linguagens Formais e Autômatos, Ed. Sagra
Luzzato, 5. edição, 2005.
8. LEWIS, H. R. e PAPADIMITRIOU, C. H. , Elementos de Teoria
da Computação, Ed. Bookmam, 2. edição, 1998.
9. AHO, A. V., ULLMAN, J. D. The Theory of Parsing, Translation,
and Compiling. Volume I: Parsing. Ed Prentice-Hall, Inc. 1972,
542p
10. DIVERIO, T. A., MENEZES, P. B., Teoria da Computação –
Máquinas Universais e Computabilidade. Ed. Sagra Luzzatto,
Porto Alegre, 1999

09/13/06 Prof. Ricardo Silveira 10/21


Definições Preliminares
bas eado em material produzido pelo prof Olinto Jos é Varela Furtado

● Tradutor
– É um programa que traduz um programa fonte
escrito em uma linguagem qualquer (denominada
linguagem fonte) para um programa objeto
equivalente escrito em outra linguagem
(denominada linguagem objeto)

Pf / Lf Tradutor Po / Lo

09/13/06 Prof. Ricardo Silveira 11/21


Definições Preliminares
● Compilador
– É um Tradutor em que a linguagem fonte é uma
linguagem de alto nível e a linguagem objeto é uma
linguagem de baixo nível (assembly ou máquina)

Po / La
Pf / Lan Compilador
Po / Lm

09/13/06 Prof. Ricardo Silveira 12/21


Definições Preliminares
● Interpretador
– É um programa que interpreta diretamente as
instruções do programa fonte, gerando o resultado.

Pf / Lq Interpretador Resultados

09/13/06 Prof. Ricardo Silveira 13/21


Definições Preliminares
● Tradutor/Interpretador
– Esquema híbrido para implementação de
linguagens de programação

Pf / Lan Tradutor Po / Lint

Interpretador

Resultados

09/13/06 Prof. Ricardo Silveira 14/21


Definições Preliminares
● Montador
– É um Tradutor em que o programa fonte está
escrito em linguagem assembly e o programa
objeto resultante está em linguagem de máquina

Pf / La Montador Po / Lm

09/13/06 Prof. Ricardo Silveira 15/21


Definições Preliminares
● Pré-processador
– É um Tradutor em que tanto o programa fonte
quanto o programa objeto estão escritos em
linguagens de alto nível

Pf/Lan1 Pré-Proc. Po/Lan2

09/13/06 Prof. Ricardo Silveira 16/21


Definições Preliminares
● Cross-Compiler
● Compilador que gera código para uma máquina
diferente da utilizada na compilação.

09/13/06 Prof. Ricardo Silveira 17/21


Estrutura geral de um
compilador
P. Fonte
Compilador
Análise

Análise Léxica

Análise Sintática

Análise Semântica

Síntes
e
Geração de Código Intermediário

Otimização de Código

Geração de Código

P. Objeto

09/13/06 Prof. Ricardo Silveira 18/21


Formas de Implementação de
Compiladores
● Fase
– Procedimento que realiza uma função bem definida
no processo de compilação.
● Passo
– Passagem completa do programa compilador sobre
o programa fonte que está sendo compilado.

09/13/06 Prof. Ricardo Silveira 19/21


Formas de Implementação
● Compiladores de 1 e de vários passos
– Quantidade de vezes que o P.F. é analisado até
que o código objeto seja gerado
– Diferentes composições
● (agrupamento de fases)

09/13/06 Prof. Ricardo Silveira 20/21


Critérios para def. do num. de
passos

Memória disponível
● Tempo de Compilação
● Tempo de execução
● Características da Linguagem
● Referências futuras
● Características das Aplicações
● Importância da Otimização
● Tamanho / Experiência da Equipe
● Disponibilidade de Ferramentas de Apoio
● Prazo para desenvolvimento

09/13/06 Prof. Ricardo Silveira 21/21