21
INE 5317 Linguagens Formais e Compiladores Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: [email protected] URL: www.inf.ufsc.br/~silveira

INE5317 Linguagens Formais e Compiladores - inf.ufsc.brsilveira/INE5317/Laminas/INE5317Aula1.pdf · 13/10 EXERCICIOS 18/10 Prova I: 20/10 Gramaticas regulares 25/10 Gramaticas regulares

  • Upload
    dolien

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

INE5317 Linguagens Formais e

Compiladores

Ricardo Azambuja SilveiraINE-CTC-UFSC

E-Mail: [email protected]: www.inf.ufsc.br/~silveira

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

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 3/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 4/21

Programa1)Introdução: Compiladores, Teoria da computação. Teoria das

linguagens formais. 8hs2)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 5/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 6/21

CronogramaDATA ASSUNTO13/09 Plano de Ensino – Conceitos Básicos15/09 Estrutura geral doscompiladores20/09 Introdução a Teoria da Computação22/09 Gramaticas27/09 Automatos Finitos29/09 Automatos Finitos04/10 Conjuntos Regulares e Expressões Regulares06/10 Conjuntos Regulares e Expressões Regulares11/10 Gramaticas regulares13/10 EXERCICIOS18/10 Prova I: 20/10 Gramaticas regulares25/10 Gramaticas regulares27/10 Gramaticas regulares01/11 Gramaticas regulares03/11 EXERCÍCIOS08/11 Automatos finitos com saída10/11 Automatos finitos com saída

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

CronogramaDATA ASSUNTO15/11 FERIADO17/11 Linguagens livres de contexto22/11 Linguagens livres de contexto24/11 Linguagens livres de contexto29/11 Propriedades das Linguagens Livre de Contexto01/12 Propriedades das Linguagens Livre de Contexto06/12 EXERCÍCIOS08/12 PROVA II02/02 Análise Sintática07/02 Análise Sintática09/02 Análise Sintática14/02 Análise Sintática16/02 Entrega do trabalho21/02 Feriado23/02 Feriado28/02 Tira dúvidas02/03 Recuperação

09/13/06 Prof. Ricardo Silveira 8/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 9/21

Bibliografia1. 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 10/21

Bibliografia6. 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 11/21

Definições Preliminaresbaseado 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 12/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 13/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 14/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 15/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 16/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 17/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 18/21

Estrutura geral de um compilador

P. FonteCompilador

Análise

Análise Léxica

Análise Sintática

Análise Semântica

Síntese

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 19/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 20/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 21/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