510 likes | 588 Views
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:
E N D
TEORIA DA COMPUTAÇÃOParte 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: • 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
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
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
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
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
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
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
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} • 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
S R 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>/ <b,A>/ Prof. Yandre Maldonado - 30 <a,B>/A <a,A>/AA <,B>/
<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
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
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
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
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
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
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
<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
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
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
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
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
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
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
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
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
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
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
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
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