A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

TEORIA DA COMPUTAÇÃO Parte II Linguagens Livres de Contexto Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1.

Apresentações semelhantes


Apresentação em tema: "TEORIA DA COMPUTAÇÃO Parte II Linguagens Livres de Contexto Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1."— Transcrição da apresentação:

1 TEORIA DA COMPUTAÇÃO Parte II Linguagens Livres de Contexto Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1

2 TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 2 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.

3 TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 3 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;

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: G 1 = ({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 G 1 descrita acima, poderia ser expressa da seguinte forma: L(G 1 )={ab n c, n 0} A linguagem gerada pela gramática G 2 descrita acima, poderia ser expressa da seguinte forma: L(G 2 )={b i ac j, i 1, j 1} G 1 = ({A, B}, {a, b, c}, P, A) onde: P = { 1) A aB 2) B bB 3)B c } G 2 = ({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 } Prof. Yandre Maldonado - 9

10 TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 10 G 2 (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

11 TEORIA DA COMPUTAÇÃO G 3 - 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 ; É usada para regras que apresentam um único símbolo não-terminal do lado esquerdo; Quando houverem repetições do lado esquerdo, do tipo: ::= 1 ::= 2... ::= n escreve-se: ::= 1 | 2 |... | n Prof. Yandre Maldonado - 12 * Os símbolos, :, = e | não fazem parte da linguagem, apenas ajudam a descrevê-la.

13 TEORIA DA COMPUTAÇÃO G 3 - Descrição em BNF 1) ::= 2) ::= | 4) ::= 5) ::= | 7) ::= o 8) ::= a 9) ::= peixe 10) ::= isca 11) ::= 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: ::= | ::= |. ::= | ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= + | - ::= + | - | / | * Prof. Yandre Maldonado - 15

16 TEORIA DA COMPUTAÇÃO Adaptação para o software PROSINTATIC: ::= | ::= cn | cn.cn ::= + | - ::= + | - | / | * 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,, e (do slide 15) poderiam ter suas regras descritas da seguinte forma: ::= [ ] ::= [ ] [. ] ::= { } 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 TEORIA DA COMPUTAÇÃO Exemplo de análise com o algoritmo CYK: Prof. Yandre Maldonado - 20 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, A A a S A S b S A a A a S b S – Símbolo de partida no topo: cadeia aceita

21 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 GLCs; TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 21

22 Exemplo de LLC: {a n b n | 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 AFs. TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 22

23 Definição: AP é uma sextupla, onde: é o alfabeto de entrada do AP; é o alfabeto da pilha; S é o conjunto finito não vazio de estados do AP; S 0 é o estado inicial, S 0 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. TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 23

24 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 = A 1 A 2...A n, n>1 então o símbolo do topo da pilha é retirado, sendo A n colocado em seu lugar, A n-1 na posição seguinte, e assim por diante. A cabeça é deslocada para a posição ocupada por A 1 que é então o novo topo da pilha; Se = então o símbolo do topo da pilha é retirado, fazendo a pilha decrescer. TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 24

25 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 S 0 e com um único símbolo na pilha, denotado por B. TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 25

26 A configuração de um AP é dada por uma tripla 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. TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 26

27 Se o AP está na configuração e temos que (s,a,A)=, então o AP move-se para a configuração e denota-se |. Se o AP move-se de uma configuração para uma configuração por meio de um número finito de movimentos, denotamos | * Se o valor de para uma determinada configuração for o AP pára. TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 27

28 Note que APs não possuem estados finais como os AFs; 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; TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 28

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

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

31 Exemplo: processamento da cadeia aaabbb SR /A /AA / PILHA B TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 31

32 Exemplo: processamento da cadeia aaabbb S R /A /AA / PILHA A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 32

33 Exemplo: processamento da cadeia aaabbb S R /A /AA / PILHA A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 33

34 Exemplo: processamento da cadeia aaabbb S R /A /AA / PILHA A A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 34

35 Exemplo: processamento da cadeia aaabbb SR /A /AA / PILHA A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 35

36 Exemplo: processamento da cadeia aaabbb SR /A /AA / PILHA A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 36

37 Exemplo: processamento da cadeia aaabbb SR /A /AA / PILHA CADEIA ACEITA TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 37

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

39 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB BASE DA PILHA: C TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 39

40 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 40

41 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 41

42 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB A A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 42

43 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB A A A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 43

44 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB A A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 44

45 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 45

46 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB A A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 46

47 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB A A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 47

48 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB A TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 48

49 Exemplo: processamento da cadeia aaaabbabbb PILHA C S /AC /BC / /AA / /BB TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 49

50 Exemplo: processamento da cadeia aaaabbabbb PILHA S /AC /BC / /AA / /BB CADEIA ACEITA TEORIA DA COMPUTAÇÃO Prof. Yandre Maldonado - 50

51 TEORIA DA COMPUTAÇÃO Atividade Prática Nº 1 Complemente a descrição em BNF da linguagem LIAD, que será entregue durante a aula. Atividade Prática Nº 2 Resolva a lista de exercícios de Autômato com Pilha. Prof. Yandre Maldonado - 51


Carregar ppt "TEORIA DA COMPUTAÇÃO Parte II Linguagens Livres de Contexto Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1."

Apresentações semelhantes


Anúncios Google