1 / 96

Linguagens Formais e Compiladores

Linguagens Formais e Compiladores. Carlos Alberto Pimentel fragapimentel@gmail.com http://fragapimentel.googlepages.com *Parte dos slides gentilmente cedidos pela prof Laís (Unifacs). Ementa. Gramáticas e automatos Gramáticas livres de contexto Gramáticas sensíveis ao contexto

magar
Télécharger la présentation

Linguagens Formais e Compiladores

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linguagens Formais e Compiladores Carlos Alberto Pimentel fragapimentel@gmail.com http://fragapimentel.googlepages.com *Parte dos slides gentilmente cedidos pela prof Laís (Unifacs)

  2. Ementa • Gramáticas e automatos • Gramáticas livres de contexto • Gramáticas sensíveis ao contexto • Introdução à arquitetura de compiladores • Análise Léxica, sintática e semântica • Geração de código intermediário e otimização

  3. Habilidades • Conceituar gramáticas e automatos • Habilidade para diferenciar os diversos tipos de gramáticas e automatos • Compreender as diversas fases de um compilador • Habilidade para implementar um tradutor • Compreender como as diversas técnicas de programação influenciam no desempenho dos programas gerados.

  4. Pré-requisitos • Conhecimentos básicos em teoria dos conjuntos e lógica matemática

  5. Conteúdo programático

  6. Bibliografia • HOPCROFT, J., MOTOWANI, R. ULLMAN, J. Introduction to Automata Theory, Languages and Computational. Addison- Wesley, 2001. • AHO, A., SETHI, R. ULLMAN, J. Compilers. Addison Wesley, 2006. • LEWIS, H., PAPADIMITRIOU, C., Elements of the theory of computational. Prentice Hall, 2004. • MENEZES, P., Linguagens formais e automatos. Sagra Luzzato, 2005. http://teia.inf.ufrgs.br/ • PRICE, A. TOSCANI, S. Implementação de linguagens de programação. Sagra Luzzato, 2005. • RAVI SETHI JEFFREY D. ULLMAN ET AL. Compiladores: Princípios, Técnicos e Ferramentas.

  7. Linguagens formais e automatos • Originalmente desenvolvida em 1950 como estudo relacionado as linguagens naturais, posteriormente linguagens “artificiais”. • Emprego na análise léxica e sintática das linguagens de programação.

  8. Sintaxe e semântica • Linguagens formais preocupa-se com a análise sintática. • A teoria da sintaxe possui modelos matemáticos bem definidos. Ex.: gramáticas de Chomsky • Linguagem: Uma entidade livre X entidade com significado

  9. Sintaxe e semântica • Sintaxe – Trata das propriedades livres da linguagem. Ex.: Verificação gramatical • Semântica – Objetiva dar uma interpretação ou significado para o programa

  10. Alfabetos, palavras, linguagens, gramáticas • Para o dicionário Aurélio um linguagem é “O uso da palavra articulada ou escrita como meio de expressão e comunicação entre pessoas” • Precisamos de um formalismo matemático.

  11. Alfabeto • Um conjunto finito de símbolos. • {a, b, c, d, e, ..., z} • {0, 1} • {0, 1, 2, ..., 9, A, B, C, D, E, F}

  12. Palavra, cadeia de caracteres ou sentença • Uma seqüência finita de símbolos justapostos. • Palavra vazia ε • Se denota um alfabeto • * denota o conjunto de todas as palavras sobre o alfabeto • + denota o conjunto de todas as palavras exceto palavra vazia. Exemplos???

  13. Tamanho ou comprimento de uma palavra • Sendo w uma palavra, o comprimento da palavra é dado por |w|. • O comprimento é dado em número de símbolos • |ε| = 0 • |casa|=4 • |pé|=2 • |compilador|=?

  14. Prefixo, sufixo, subpalavra • Prefixo – subconjunto inicial de símbolos de uma palavra • Sufixo – subconjunto final de símbolos de uma palavra • Subpalavra – qualquer subconjunto de símbolos de uma palavra. • Abcb é uma palavra do alfabeto {a, b, c} • Exemplos de prefixo e sufixo????

  15. Linguagem formal • Um conjunto de palavras sobre um alfabeto. • Exemplo de linguagem: O conjunto de palíndromos sobre um determinado alfabeto • {}<>{ε}

  16. Concatenação • Justaposição de símbolos que representam as palavras componentes • Propriedades: • Associativa – v(wt) = (vw)t • Elemento neutro a esquerda e direita • εw=w=wε • Exemplos????

  17. Concatenação sucessiva • Uma palavra e concatenada sucessivamente com ela mesma. • wn – Sendo w uma palavra e n a quantidade de contatenações. Assim: • w0=ε • wn= wn-1w, para n > 0 • Ex.: A5=AAAAA • Concatenação da palavra vazia??????

  18. Gramática • Uma gramática é uma quádrupla ordenada • G=(V, T, P, S) • V – Conjunto finito de símbolos não terminais • T – Conjunto finito de símbolos terminais • P – Conjunto finito de pares, denominados regras de produção. • S – Elemento de V, denominado variável inicial

  19. Regra de produção • Definem as condições de geração das palavras da linguagem. • 1| 2 | 3| .... | n • Para descobrir se uma cadeia x  T* é gerada pela gramática basta fazer um processo de derivação começando do símbolo inicial S até obter a cadeia desejada.

  20. Gramáticas • Um exemplo inicial: <frase>  <sujeito> <verbo> <predicado> <sujeito>  O homem <sujeito>  A mulher <verbo>  leu <verbo>  escreveu <predicado>  um <adjetivo> livro <adjetivo>  ótimo <adjetivo>  péssimo <adjetivo> e

  21. Exemplo de gramática • A gramática gera a seguinte linguagem • {ww | w é palavra de {a, b}*}

  22. Gramática {ww | w é palavra de {a, b}*} • G={V, T, P, S} • V={S, X, Y, A, B, F} • T={a, b} • P={S→XY, X→XaA | XbB | F, Aa→aA, Ab→bA, AY→Ya, Ba→aB, Bb→bB, BY→Yb, Fa→aF, Fb→bF,FY→ e} • S={S}

  23. Exemplo de derivação da gramática {ww | w é palavra de {a, b}*} • S=>XY=>XaAY=>XaYa=>XbBaYa=>XbaBYa=>FbaYba=>bFaYba=>baFYba =>baba

  24. {ww | w é palavra de {a, b}*} • A gramática apresentada gera o primeiro w após X e o segundo w após Y, como segue: • A cada símbolo terminal gerado após X, é gerada uma variável correspondente; • Esta variável “caminha” na palavra até passar por Y, quando devira o correspondente terminal; • Para encerrar, X devira a variável F a qual “caminha” até encontrar Y quando FY deriva a palavra vazia.

  25. Exercício (Media de eficiência) • Dada a gramática anterior da ling. {ww | w é palavra de {a, b}*} • Gerar duas palavras de comprimento |WW| = 4 e uma palavra de comprimento |WW| = 6. Mostrar que a palavra bbaa não pode ser derivada da gramática. Individual ou em dupla

  26. Gramáticas equivalentes • Duas gramáticas G1 e G2 são ditas Gramáticas equivalentes se, e somente se, GERA(G1) = GERA(G2)

  27. Exercício (Media de eficiência) • Desenvolver uma gramática que gere expressões aritméticas com parênteses balanceados, dois operadores (representados por * e +) e um operando (representado por x), Por exemplo, x, x*(x+x) e ((((x)))) são expressões aritméticas válidas. • No máximo 3 pessoas por equipe

  28. Linguagens Regulares ou do tipo 3 • De acordo com a Hierarquia de Chomsky, trata-se da classe de linguagens mais simples, sendo possível desenvolver algoritmos de reconhecimento ou de geração de pouca complexidade, grande eficiência e de fácil implementação.

  29. Propriedades das linguagens regulares • LR podem ser representadas por formalismos • pouca complexidade • grande eficiência • fácil implementação • Entretanto, por ser uma classe relativamente simples • é restrita e limitada

  30. Linguagem Regular ou tipo 3 • Uma das principais características das linguagens regulares é o fato de serem representadas for formalismos de pouca complexidade, grande eficiência e fácil implementação. Entretanto, por serem de uma classe relativamente simples, é restrita e limitada.

  31. LR (tipo 3) LLC (tipo 2) LSC (tipo 1) LEF (tipo 0) De acordo com a Hierarquia de Chomsky

  32. Tradução dos formalismos das linguagens regulares

  33. Sistema de estados finitos • É um modelo matemático de um sistema com entradas e saídas discretas. Pode assumir um número pré-definido de estados. Cada estado resume somente informações do estado passado para determinar as ações da próxima entrada.

  34. Exemplo de sistema de estados finitos • Um exemplo clássico e simples é o elevador. Trata-se de um sistema que não memoriza as requisições anteriores. Cada “estado” sumariza as informações “andar corrente” e “direção de movimento”. As entradas para o sistema são requisições pendentes. • Ou exemplo, analisadores léxicos e alguns processadores de texto, memorizam apenas a estrutura do prefixo das palavras

  35. Teoria dos AutômatosAutômatos Finitos • Autômatos finitos (AF): • modelo restrito para o computador • são dispositivos de reconhecimento de linguagens • tem capacidade finita fixa de informação • sem memória auxiliar • sem saída de dados • Pode-se dizer que é uma máquina abstrata que reconhece linguagens. Supondo-se uma linguagem L e fornecendo ao AF uma seqüência de caracteres w, ele responderá se w  L ou w  L.

  36. Teoria dos AutômatosAutômatos Finitos Um autômato finito possui: • Fita de entrada– armazena os símbolos da cadeia de entrada; • Controle finito - extrai símbolos da fita de entrada através de um sensor de leitura; • Função de transição– decide qual deverá ser o próximo estado do autômato, com base no símbolo lido e no estado anterior; • Número finito de estados.

  37. A Fita • É finita a esquerda e a direita, dividida em células onde cada uma armazena um símbolo. • Não é possível gravar sobre a fita e não existe memória auxiliar • Inicialmente a cadeia a ser processada ocupa toda fita

  38. Unidade de controle • Possui um número finito de estados pré-definido. A unidade lê um símbolo da fita de cada vez e move a cabeça para a direita • Inicialmente a cabeça é posicionada mais a esquerda da fita. • Importante – O autômato Finito não possui memória de trabalho.

  39. Autômatos finitos equivalentes • Dois autômatos finitos M1 e M2 são ditos equivalente se, e somente se: • ACEITAM(M1) = ACEITAM(M2)

  40. Linguagem regular ou do tipo 3 • Uma linguagem aceita por um autômato finito determinístico é uma linguagem regular

  41. fita com a cadeia w de entrada a a b b Cabeça de leitura Controle Finito Início do processo de reconhecimento pelo estado inicial qo Teoria dos AutômatosAutômatos Finitos • Graficamente um AF pode ser representado por

  42. Teoria dos AutômatosAutômatos Finitos O Autômato Finito consegue ler, através da cabeça de leitura, os símbolos da fita seqüencialmente sempre da esquerda para a direita. O AF é uma máquina que sempre pára retornando uma resposta sim (cadeia reconhecida) ou não (cadeia não conhecida). Podem ser classificados em: • Autômatos Finitos Determinísticos (AFD) • Autômatos Finitos Não-Determinísticos (AFND)

  43. Teoria dos AutômatosAutômatos Finitos Determinísticos Definição formal de um Autômato Finito Determinístico: Um Autômato Finito Determinístico (AFD) ou simplesmente Autômato Finito (AF) M é uma 5-upla: M = (, Q, , q0, F), onde : alfabeto de símbolos de entrada; Q: conjunto finito de estados do autômato; : função programa ou função de transição (parcial) : Q    Q q0: estado inicial (q0Q) F: conjunto de estados finais ou estados de aceitação (FQ)

  44. Teoria dos AutômatosAutômatos Finitos Determinísticos Representação Gráfica:

  45. 1 0 0  0 1 qo q1 qo qo q1 1 q1 q1 qo Teoria dos AutômatosAutômatos Finitos Determinísticos Exemplo: Autômato que reconhece a linguagem de números binários com quantidade ímpar de 1s. M = (∑, Q, , qo, F) Q = { qo, q1 }, ∑ = { 0, 1 }, F = { q1 } Forma Tabular : Forma Gráfica :

  46. Teoria dos AutômatosAutômatos Finitos Determinísticos • Um Autômato Finito nunca entra em “loop” infinito, pois como qualquer cadeia a ser processada pelo AF é finita e como um novo símbolo da entrada é lido a cada aplicação da função programa, o processo de reconhecimento de qualquer cadeia  pára de duas maneiras: • Aceitando ou; • rejeitando uma entrada .

  47. Teoria dos AutômatosAutômatos Finitos Determinísticos As condições de parada são as seguintes: • Após processar o último símbolo da fita, o Autômato Finito assume um estado final: o autômato pára e a entrada  é aceita; • Após processar o último símbolo da fita, o AF assume um estado não final: o autômato pára e a entrada  é rejeitada; • A função programa é indefinida para o argumento (estado corrente, símbolo lido): a máquina pára e a palavra de entrada  é rejeitada.

  48. Teoria dos AutômatosAutômatos Finitos Determinísticos Definição: Autômatos Finitos equivalentes. • Dois autômatos finitos M1 e M2 são ditos equivalentes se, e somente se: L(M1) = L(M2); Definição: Um linguagem aceita por um autômato finito determinístico é uma linguagem regular ou Tipo 3.

  49. 1 0 0  0 1 qo q1 qo qo q1 1 q1 q1 qo Teoria dos AutômatosAutômatos Finitos Determinísticos Exemplo: Autômato que reconhece a linguagem de números binários com quantidade ímpar de 1s. M = (∑, Q, , qo, F) Q = { qo, q1 }, ∑ = { 0, 1 }, F = { q1 } Forma Tabular : Forma Gráfica :

  50. Teoria dos AutômatosAutômatos Finitos Determinísticos Definição: Processo de reconhecimento de uma dada cadeia w por um AF. O autômato é inicializado com a cabeça no símbolo mais a esquerda e no estado inicial qo. Se um AF M=(∑, Q, , qo, F) está no estado p e a cabeça de leitura da fita olha o símbolo a  ∑, então o AF vai para o estado (p, a) = q e move a cabeça um símbolo à direita. Se w  ∑* então M aceita w se M computa w e depois de ler o último símbolo de w entra em um estado final  F.

More Related