1 / 51

TEORIA DA COMPUTAÇÃO Parte II  Linguagens Livres de Contexto

TEORIA DA COMPUTAÇÃO Parte II  Linguagens Livres de Contexto . Prof. Yandre Maldonado e Gomes da Costa. Prof. Yandre Maldonado - 1. TEORIA DA COMPUTAÇÃO. Linguagem Livre de Contexto - LLC Compreende um universo mais amplo que as LR, permitindo tratar questões como:

reed
Download Presentation

TEORIA DA COMPUTAÇÃO Parte II  Linguagens Livres de Contexto

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. TEORIA DA COMPUTAÇÃOParte II Linguagens Livres de Contexto Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1

  2. TEORIA DA COMPUTAÇÃO • Linguagem Livre de Contexto - LLC • Compreende um universo mais amplo que as LR, permitindo tratar questões como: • Parênteses Balanceados; • Construções Bloco-Estruturadas; • Outras estruturas próprias de linguagens como C, Pascal, etc. • Os algoritmos que as implementam são simples e possuem uma boa eficiência. • Aplicações: analisadores sintáticos, tradutores de linguagens e processadores de texto etc. Prof. Yandre Maldonado - 2

  3. TEORIA DA COMPUTAÇÃO • As LLC´s podem ser especificadas através de: • Gramática Livre de Contexto – GLC • Formalismo gerador de sentenças da linguagem que define; • Autômato com Pilha – AP • Formalismo reconhecedor de sentenças da linguagem que define; Prof. Yandre Maldonado - 3

  4. TEORIA DA COMPUTAÇÃO • GLC é uma quádrupla (V, T, P, S), onde: • V é um conjunto finito de símbolos não-terminais (ou variáveis); • T é um conjunto finito de símbolos terminais disjunto de V; • P é um conjunto finito de pares, denominados regras de produção tal que a primeira componente é um símbolo de V e a segunda componente é palavra de (VT)*; • S é um elemento de V, denominado símbolo inicial (ou símbolo de partida). Prof. Yandre Maldonado - 4

  5. TEORIA DA COMPUTAÇÃO • Os símbolos de T são aqueles que aparecem nos programas de uma linguagem de programação. É o alfabeto em cima do qual a linguagem é definida; • Os elementos de V são símbolos auxiliares que são criados para permitir a definição das regras da linguagem. Eles correspondem à “categorias sintáticas” da linguagem definida: • Português: sentença, predicado, verbo, ...; • Pascal: programa, bloco, procedure, ...; Prof. Yandre Maldonado - 5

  6. TEORIA DA COMPUTAÇÃO • Uma regra de produção (V, ) é representada por V; • As regras de produção definem as condições de geração das sentenças; • A aplicação de uma regra de produção é denominada derivação; • Uma regra V indica que V pode ser substituído por  sempre que V aparecer; • Enquanto houver símbolo não-terminal na cadeia em derivação, esta derivação não terá terminado; Prof. Yandre Maldonado - 6

  7. TEORIA DA COMPUTAÇÃO • O símbolo inicial é o símbolo através do qual deve iniciar o processo de derivação de uma sentença; • Observações: • VT =  • Os elementos de T são os terminais. Procuraremos representá-los por letras minúsculas (a, b, c, d, ...) • Os elementos de V são os não-terminais. Procuraremos representá-los por letras maiúsculas (A, B, C, D, ...) • As cadeias mistas, isto é, aquelas que contém símbolos de V e símbolos de T (cadeias pertencentes à (VT)* ) serão representadas por letras gregas (, , , , ...) Prof. Yandre Maldonado - 7

  8. TEORIA DA COMPUTAÇÃO • Exemplo: • G1 = ({S, A, B}, {a, b}, P, S) onde: • P = { 1) S  AB 2) A  a 3) B b } • Quais as cadeias terminais geradas por esta gramática? Prof. Yandre Maldonado - 8

  9. TEORIA DA COMPUTAÇÃO • Descrição de linguagens: • A linguagem gerada pela gramática G1 descrita acima, poderia ser expressa da seguinte forma: L(G1)={abnc, n 0} • A linguagem gerada pela gramática G2 descrita acima, poderia ser expressa da seguinte forma: L(G2)={biacj, i1, j 1} • G2 = ({S, A, B, C}, {a, b, c}, P, S) onde: • P = { 1) S  A • 2) A  BaC • 3) B  bB • 4) B  b • 5) C  cC • 6) C  c } • G1 = ({A, B}, {a, b, c}, P, A) onde: • P = { 1) A  aB • 2)B  bB • 3)B  c } Prof. Yandre Maldonado - 9

  10. TEORIA DA COMPUTAÇÃO • G2 (subconjunto da língua portuguesa) • V = {Sentença, Sn, Sv, Artigo, Verbo, Substantivo, Complemento} • T = {peixe, isca, mordeu, o, a} • P = { 1) Sentença  Sn Sv 2) Sn  Artigo Substantivo 3) Sv Verbo Complemento 4) Complemento Artigo Substantivo 5) Artigo o 6) Artigo a 7) Substantivo peixe 8) Substantivo isca 9) Verbo mordeu } • S = Sentença Prof. Yandre Maldonado - 10

  11. TEORIA DA COMPUTAÇÃO • G3 - Eliminando os problemas de concordância de gênero • V = {Sentença, Sn, Sv, ArtigoF, ArtigoM, Verbo, SubstantivoF, SubstantivoM, Complemento} • T = {peixe, isca, mordeu, o, a} • P = { 1) Sentença  Sn Sv 2) Sn  ArtigoF SubstantivoF 3) Sn  ArtigoM SubstantivoM 4) Sv Verbo Complemento 5) Complemento ArtigoF SubstantivoF 6) Complemento ArtigoM SubstantivoM 7) ArtigoF a 8) ArtigoM o 9) SubstantivoF isca 10) SubstantivoM peixe 11) Verbo mordeu } • S = Sentença Prof. Yandre Maldonado - 11

  12. TEORIA DA COMPUTAÇÃO • BNF - Forma Normal de Backus • Substitui o símbolo “” por “::=”; • Os não-terminais são ladeados por “<” e “>”; • É usada para regras que apresentam um único símbolo não-terminal do lado esquerdo; • Quando houverem repetições do lado esquerdo, do tipo: • <A> ::= 1 • <A> ::= 2 ... • <A> ::= n escreve-se: <A> ::= 1 | 2 | ... | n * Os símbolos <, >, :, = e | não fazem parte da linguagem, apenas ajudam a descrevê-la. Prof. Yandre Maldonado - 12

  13. TEORIA DA COMPUTAÇÃO • G3 - Descrição em BNF 1) <Sentença> ::= <Sn> <Sv> 2) <Sn> ::= <ArtigoF> <SubstantivoF> | <ArtigoM> <SubstantivoM> 4) <Sv>::= <Verbo> <Complemento> 5) <Complemento>::= <ArtigoF> <SubstantivoF> |<ArtigoM> <SubstantivoM> 7) <ArtigoF>::= o 8) <ArtigoM>::= a 9) <SubstantivoF>::= peixe 10) <SubstantivoM>::= isca 11) <Verbo>::= mordeu Prof. Yandre Maldonado - 13

  14. TEORIA DA COMPUTAÇÃO • BNF é um padrão muito utilizado para a descrição sintática de linguagens; • Principais aplicações de descrição sintática de linguagens (BNF): • Ajuda a entender como se escreve programas sintaticamente corretos; • Pode ser usada para determinar se um programa está sintaticamente correto (papel do compilador). Prof. Yandre Maldonado - 14

  15. TEORIA DA COMPUTAÇÃO • BNF para expressões aritméticas: <expressão> ::= <valor> | <valor><operador><expressão> <valor> ::= <número> | <sinal><número> <número> ::= <semsinal> | <semsinal>.<semsinal> <semsinal> ::= <dígito> | <dígito><semsinal> <dígito>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 <sinal> ::= + | - <operador> ::= + | - | / | * Prof. Yandre Maldonado - 15

  16. TEORIA DA COMPUTAÇÃO • Adaptação para o software PROSINTATIC: <expressão> ::= <valor> | <valor><operador><expressão> <valor> ::= <número> | <sinal><número> <número> ::= cn | cn.cn <sinal> ::= + | - <operador> ::= + | - | / | * Prof. Yandre Maldonado - 16

  17. TEORIA DA COMPUTAÇÃO • EBNF – Extended BNF • Notação que acrescenta metasímbolos adicionais à notação BNF; • [ ]  opcionalidade; • {}  repetição; • Seguindo esta notação, os Não-Terminais <expressão>, <valor>, <semsinal> e <número> (do slide 15) poderiam ter suas regras descritas da seguinte forma: • <expressão> ::= <valor> [<operador><expressão>] • <valor> ::= [<sinal>] <semsinal> [.<semsinal>] • <semsinal> ::= <dígito> {<dígito>} • Pascal simplificado em EBNF; Prof. Yandre Maldonado - 17

  18. TEORIA DA COMPUTAÇÃO • PROSINTATIC • Ambiente computacional para auxílio ao projeto sintático de linguagens computacionais; • Baseado no algoritmo de Cocke-Younger-Kasami; • Introduz algumas facilidades para o projeto de linguagens, tais como: • Analisador Léxico; • Classificação de símbolos terminais (símbolo/palavra reservada). Prof. Yandre Maldonado - 18

  19. TEORIA DA COMPUTAÇÃO • Algoritmo de Cocke-Younger-Kasami • Reconhecedor de LLC´s; • Só funciona para GLC´s que estejam na Forma Normal de Chomsky (FNC); • Uma GLC está na FNC quando todas as suas regras são da forma: • ABC ou Aa, onde: • A, B e C são Não-terminais e a é terminal. Prof. Yandre Maldonado - 19

  20. S, A S, A S, A S, A S S, A S, A A S S, A A S A A S a b a a b TEORIA DA COMPUTAÇÃO • Exemplo de análise com o algoritmo CYK: Dada a Gramática: G({S,A,B},{a,b},P,S), onde P: S AA S AS S b A SA A AS A a S – Símbolo de partida no topo: cadeia aceita Prof. Yandre Maldonado - 20

  21. TEORIA DA COMPUTAÇÃO • Autômato com Pilha • São formalismos (máquinas) capazes de reconhecer as Linguagens Livres de Contexto; • Maior poder que os Autômatos Finitos, pois possuem um “espaço de armazenamento” extra que é utilizado durante o processamento de uma cadeia; • Possui uma pilha que caracteriza uma memória auxiliar onde pode-se inserir e remover informações; • Mesmo poder de reconhecimento das GLC’s; Prof. Yandre Maldonado - 21

  22. TEORIA DA COMPUTAÇÃO • Exemplo de LLC: {anbn | n0} • Um AF não é capaz de reconhecer este tipo de linguagem devido à sua incapacidade de “recordar” (memorizar) informação sobre a cadeia analisada; • Autômatos com Pilha (AP) possuem uma pilha para armazenar informação, adicionando poder aos AF’s. Prof. Yandre Maldonado - 22

  23. TEORIA DA COMPUTAÇÃO • Definição: • AP é uma sextupla <,,S,S0,,B>, onde: •  é o alfabeto de entrada do AP; •  é o alfabeto da pilha; • S é o conjunto finito não vazio de estados do AP; • S0 é o estado inicial, S0  S; •  é a função de transição de estados, : S  ({})    conjunto de subconjuntos finitos de S  * • B é o símbolo da base da pilha, B  . Prof. Yandre Maldonado - 23

  24. TEORIA DA COMPUTAÇÃO • Ao contrário da fita de entrada, a pilha pode ser lida e alterada durante um processamento; • O autômato verifica o conteúdo do topo da pilha, retira-o e substitui por uma cadeia   *. • Se  = A, e A  , então o símbolo do topo é substituído por A e a cabeça de leitura escrita continua posicionada no mesmo lugar; • Se  = A1A2...An, n>1 então o símbolo do topo da pilha é retirado, sendo An colocado em seu lugar, An-1 na posição seguinte, e assim por diante. A cabeça é deslocada para a posição ocupada por A1 que é então o novo topo da pilha; • Se  =  então o símbolo do topo da pilha é retirado, fazendo a pilha decrescer. Prof. Yandre Maldonado - 24

  25. TEORIA DA COMPUTAÇÃO • A função de transição , é função do estado corrente, da letra corrente na fita de entrada e do símbolo no topo da pilha; • Além disso, esta função determina não só o próximo estado que o AP assume, mas também como o topo da pilha deve ser substituído; • O AP inicia sua operação num estado inicial especial denotado por S0 e com um único símbolo na pilha, denotado por B. Prof. Yandre Maldonado - 25

  26. TEORIA DA COMPUTAÇÃO • A configuração de um AP é dada por uma tripla <s, x, > onde s é o estado corrente, x é a cadeia da fita que falta ser processada e  é o conteúdo da pilha, com o topo no início de ; • O AP anda ou move-se de uma configuração para outra através da aplicação de uma função de transição. Prof. Yandre Maldonado - 26

  27. TEORIA DA COMPUTAÇÃO • Se o AP está na configuração <s,ay,A> e temos que (s,a,A)=<t,>, então o AP move-se para a configuração <t,y, > e denota-se <s,ay,A> |— <t,y, >. • Se o AP move-se de uma configuração <s1,x1,1> para uma configuração <s2,x2,2> por meio de um número finito de movimentos, denotamos <s1,x1,1>|—*<s2,x2,2> • Se o valor de  para uma determinada configuração for  o AP pára. Prof. Yandre Maldonado - 27

  28. TEORIA DA COMPUTAÇÃO • Note que AP’s não possuem estados finais como os AF’s; • Assim, um string x é aceito se, ao chegar ao final da cadeia de entrada, a pilha estiver vazia, independentemente do estado em que o AP se encontra; Prof. Yandre Maldonado - 28

  29. TEORIA DA COMPUTAÇÃO • Formalmente temos: • Dado o AP P = <,,S,S0,,B> e o string x sobre , diz-se que x é aceito por P sse existe s  S tal que <S0,x,B>|—*<s,, >. Caso contrário, x é rejeitado. • Dado o AP P = <,,S,S0,,B>, a linguagem L(P) definida por P é {x  *|  sS  <S0,x,B> |—*<s,, >} Prof. Yandre Maldonado - 29

  30. S R TEORIA DA COMPUTAÇÃO • Exemplo de AP para a LLC {anbn | n0}: (S,a,B) = {<S,A>} (S,a,A) = {<S,AA>} (S,b,A) = {<R,>} (R,b,A) = {<R, >} (S,,B) = {<S, >} <b,A>/  <b,A>/  Prof. Yandre Maldonado - 30 <a,B>/A <a,A>/AA <,B>/ 

  31. <b,A>/  S R <b,A>/  <a,B>/A <a,A>/AA <,B>/  B PILHA TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaabbb Prof. Yandre Maldonado - 31

  32. R TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaabbb <b,A>/  S <b,A>/  <a,B>/A <a,A>/AA <,B>/  Prof. Yandre Maldonado - 32 A PILHA

  33. R TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaabbb <b,A>/  S <b,A>/  <a,B>/A <a,A>/AA <,B>/  Prof. Yandre Maldonado - 33 A A PILHA

  34. R TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaabbb <b,A>/  S A <b,A>/  <a,B>/A <a,A>/AA <,B>/  Prof. Yandre Maldonado - 34 A A PILHA

  35. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaabbb <b,A>/  S R <b,A>/  <a,B>/A <a,A>/AA <,B>/  Prof. Yandre Maldonado - 35 A A PILHA

  36. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaabbb <b,A>/  S R <b,A>/  <a,B>/A <a,A>/AA <,B>/  Prof. Yandre Maldonado - 36 A PILHA

  37. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaabbb <b,A>/  S R <b,A>/  <a,B>/A <a,A>/AA <,B>/  Prof. Yandre Maldonado - 37 CADEIA ACEITA PILHA

  38. <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S TEORIA DA COMPUTAÇÃO • Exemplo de AP para {x{a,b}*| |x|a=|x|b}: (S,a,C) = {<S,AC>} (S,b,C) = {<S,BC>} (S,,C) = {<S,>} (S,a,A) = {<S,AA>} (S,b,A) = {<S,>} (S,a,B) = {<S,>} (S,b,B) = {<S,BB>} Prof. Yandre Maldonado - 38

  39. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S Prof. Yandre Maldonado - 39 C BASE DA PILHA: C PILHA

  40. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S Prof. Yandre Maldonado - 40 A C PILHA

  41. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S A Prof. Yandre Maldonado - 41 A C PILHA

  42. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S A A Prof. Yandre Maldonado - 42 A C PILHA

  43. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB A S A A Prof. Yandre Maldonado - 43 A C PILHA

  44. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S A A Prof. Yandre Maldonado - 44 A C PILHA

  45. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S A Prof. Yandre Maldonado - 45 A C PILHA

  46. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S A A Prof. Yandre Maldonado - 46 A C PILHA

  47. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S A Prof. Yandre Maldonado - 47 A C PILHA

  48. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S Prof. Yandre Maldonado - 48 A C PILHA

  49. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S Prof. Yandre Maldonado - 49 C PILHA

  50. TEORIA DA COMPUTAÇÃO • Exemplo: processamento da cadeia aaaabbabbb <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB S Prof. Yandre Maldonado - 50 CADEIA ACEITA PILHA

More Related