Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRayssa Cava Alterado mais de 10 anos atrás
1
TEORIA DA COMPUTAÇÃO Parte II Linguagens Livres de Contexto
Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa
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 (VT)*; 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: VT = 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 à (VT)* ) 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: 2)B bB P = { 1) S A
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, i1, 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: ABC ou Aa, 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:
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 S, A A a S b 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 | n0}
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
<s1,x1,1>|—*<s2,x2,2>
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 *| sS <S0,x,B> |—*<s,, >} Prof. Yandre Maldonado - 29
30
TEORIA DA COMPUTAÇÃO Exemplo de AP para a LLC {anbn | n0}:
(S,a,B) = {<S,A>} (S,a,A) = {<S,AA>} (S,b,A) = {<R,>} (R,b,A) = {<R, >} (S,,B) = {<S, >} <b,A>/ S R <b,A>/ Prof. Yandre Maldonado - 30 <a,B>/A <a,A>/AA <,B>/
31
TEORIA DA COMPUTAÇÃO Exemplo: processamento da cadeia aaabbb S R
<a,B>/A <a,A>/AA <,B>/ <b,A>/ PILHA B Prof. Yandre Maldonado - 31
32
TEORIA DA COMPUTAÇÃO Exemplo: processamento da cadeia aaabbb
<b,A>/ R S <b,A>/ <a,B>/A <a,A>/AA <,B>/ Prof. Yandre Maldonado - 32 A PILHA
33
TEORIA DA COMPUTAÇÃO Exemplo: processamento da cadeia aaabbb
<b,A>/ R S <b,A>/ <a,B>/A <a,A>/AA <,B>/ Prof. Yandre Maldonado - 33 A A PILHA
34
TEORIA DA COMPUTAÇÃO Exemplo: processamento da cadeia aaabbb
<b,A>/ R S <b,A>/ 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
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>} S <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/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
51
TEORIA DA COMPUTAÇÃO Atividade Prática Nº 1 Atividade Prática Nº 2
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.