Upload
internet
View
114
Download
2
Embed Size (px)
Citation preview
TEORIA DA COMPUTAÇÃO
Parte II Linguagens Livres de Contexto
Prof. Yandre Maldonado e Gomes da Costa
Pro
f. Yan
dre M
aldo
nad
o - 1
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 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.
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 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;
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).
Pro
f. Yan
dre M
aldo
nad
o - 4
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, ...;
Pro
f. Yan
dre M
aldo
nad
o - 5
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;
Pro
f. Yan
dre M
aldo
nad
o - 6
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 (, , , , ...)
Pro
f. Yan
dre M
aldo
nad
o - 7
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?
Pro
f. Yan
dre M
aldo
nad
o - 8
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, i1, j 1}
G1 = ({A, B}, {a, b, c}, P, A) onde:
P = { 1) A aB
2)B bB 3)B c }
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 }
Pro
f. Yan
dre M
aldo
nad
o - 9
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 10
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
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 SubstantivoF3) Sn ArtigoM SubstantivoM4) Sv Verbo Complemento5) Complemento ArtigoF
SubstantivoF6) Complemento ArtigoM
SubstantivoM7) ArtigoF a8) ArtigoM o9) SubstantivoF isca
10) SubstantivoM peixe 11) Verbo mordeu }
• S = Sentença
Pro
f. Yan
dre M
aldo
nad
o - 11
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
Pro
f. Yan
dre M
aldo
nad
o - 12
* Os símbolos <, >, :, = e | não fazem parte da linguagem, apenas ajudam a descrevê-la.
TEORIA DA COMPUTAÇÃO
G3 - Descrição em BNF1) <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
Pro
f. Yan
dre M
aldo
nad
o - 13
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).
Pro
f. Yan
dre M
aldo
nad
o - 14
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> ::= + | - | / | *
Pro
f. Yan
dre M
aldo
nad
o - 15
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> ::= + | - | / | *
Pro
f. Yan
dre M
aldo
nad
o - 16
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;
Pro
f. Yan
dre M
aldo
nad
o - 17
TEORIA DA COMPUTAÇÃO
PROSINTATICAmbiente 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).
Pro
f. Yan
dre M
aldo
nad
o - 18
TEORIA DA COMPUTAÇÃO
Algoritmo de Cocke-Younger-KasamiReconhecedor 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.
Pro
f. Yan
dre M
aldo
nad
o - 19
TEORIA DA COMPUTAÇÃO
Exemplo de análise com o algoritmo CYK:
Pro
f. Yan
dre M
aldo
nad
o - 20
Dada a Gramática:
G({S,A,B},{a,b},P,S), onde P:S AAS ASS bA SAA ASA a
S, A
S, A
S, A
S, A
A
a
S, A
S
A
S
b
S, A
S
A
a
S, A
A
a
S
b
S – Símbolo de partida no topo: cadeia aceita
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;
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 21
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.
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 22
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 .
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 23
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.
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 24
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.
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 25
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.
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 26
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.
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 27
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;
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 28
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,, >}
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 29
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, >}
S R
<a,B>/A<a,A>/AA<,B>/
<b,A>/
<b,A>/
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 30
Exemplo: processamento da cadeia aaabbb
S R
<a,B>/A<a,A>/AA<,B>/
<b,A>/
<b,A>/
PILHAPILHA
B
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 31
Exemplo: processamento da cadeia aaabbb
S R
<a,B>/A<a,A>/AA<,B>/
<b,A>/
<b,A>/
PILHAPILHA
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 32
Exemplo: processamento da cadeia aaabbb
S R
<a,B>/A<a,A>/AA<,B>/
<b,A>/
<b,A>/
PILHAPILHA
A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 33
Exemplo: processamento da cadeia aaabbb
S R
<a,B>/A<a,A>/AA<,B>/
<b,A>/
<b,A>/
PILHAPILHA
A
A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 34
Exemplo: processamento da cadeia aaabbb
S R
<a,B>/A<a,A>/AA<,B>/
<b,A>/
<b,A>/
PILHAPILHA
A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 35
Exemplo: processamento da cadeia aaabbb
S R
<a,B>/A<a,A>/AA<,B>/
<b,A>/
<b,A>/
PILHAPILHA
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 36
Exemplo: processamento da cadeia aaabbb
S R
<a,B>/A<a,A>/AA<,B>/
<b,A>/
<b,A>/
PILHAPILHA
CADEIA ACEITA
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 37
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
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 38
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB
BASE DA PILHA: C
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 39
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 40
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 41
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB A
A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 42
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB A
A
A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 43
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB A
A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 44
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 45
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB A
A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 46
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB A
A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 47
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB A
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 48
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
C
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 49
Exemplo: processamento da cadeia aaaabbabbb
PILHAPILHA
S
<a,C>/AC<b,C>/BC<,C>/<a,A>/AA<b,A>/<a,B>/<b,B>/BB
CADEIA ACEITA
TEORIA DA COMPUTAÇÃO
Pro
f. Yan
dre M
aldo
nad
o - 50
TEORIA DA COMPUTAÇÃO
Atividade Prática Nº 1Complemente a descrição em BNF da
linguagem LIAD, que será entregue durante a aula.
Atividade Prática Nº 2Resolva a lista de exercícios de
Autômato com Pilha.
Pro
f. Yan
dre M
aldo
nad
o - 51