11.07.2015 Views

Linguagens Livres de Contexto

Linguagens Livres de Contexto

Linguagens Livres de Contexto

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Universida<strong>de</strong> Católica <strong>de</strong> PelotasCentro PolitécnicoBacharelado em Ciência da Computação364018 <strong>Linguagens</strong> Formais e AutômatosTEXTO 4<strong>Linguagens</strong> <strong>Livres</strong> <strong>de</strong> <strong>Contexto</strong>Prof. Luiz A M PalazzoMaio <strong>de</strong> 2011_______________________________________________<strong>Linguagens</strong> <strong>Livres</strong> <strong>de</strong> <strong>Contexto</strong>A classe das LLCs ou <strong>Linguagens</strong> do Tipo 2, contém propriamente a classe das LRs e é <strong>de</strong>fundamental importância para o estudo da informática, pois:a) Compreen<strong>de</strong> um universo mais amplo que as LR, permitindo tratar questões como:• Parenteses Balanceados,• Construções Bloco-Estruturadas• Outras estruturas próprias <strong>de</strong> linguagens como C, Pascal, etc.b) Os algoritmos que as implementam são simples e possuem uma boa eficiência.c) Aplicações: analisadores sintáticos, tradutores <strong>de</strong> linguagens e processadores <strong>de</strong> textoetc.O estudo das LLC é <strong>de</strong>senvolvido a partir <strong>de</strong> um formalismo axiomático ou gerador (gramática) e umformalismo operacional ou reconhecedor (autômato) como segue:a) Gramáticas <strong>Livres</strong> <strong>de</strong> <strong>Contexto</strong>: São gramáticas on<strong>de</strong> as regras <strong>de</strong> produção são <strong>de</strong>finidas<strong>de</strong> forma mais livre do que nas gramáticas regulares,b) Autômato com Pilha: Possui a estrutura basica <strong>de</strong> um AFD ao qual é associado umamemória auxiliar na forma <strong>de</strong> pilha e a facilida<strong>de</strong> <strong>de</strong> não-<strong>de</strong>terminismo.Gramáticas <strong>Livres</strong> <strong>de</strong> <strong>Contexto</strong>As LLCs são <strong>de</strong>senvolvidas a partir das GLCs.Definição: Gramática Livre <strong>de</strong> <strong>Contexto</strong> (GLC):Uma GLC G é uma gramática G = (V, T, P, S), com a restrição <strong>de</strong> que qualquer regras <strong>de</strong> produçãoem P é da forma A , on<strong>de</strong> A é uma variável <strong>de</strong> V e é palavra <strong>de</strong> (V T )*.Portanto uma GLC é uma gramática on<strong>de</strong> o lado esquerdo das produções possui exatamente umavariável.Definição: <strong>Linguagens</strong> <strong>Livres</strong> <strong>de</strong> <strong>Contexto</strong> (LLC) ou do Tipo 2Uma linguagem é uma LLC (ou do Tipo 2 na Classificação <strong>de</strong> Chomsky), se for gerada por uma GLC.A expressão "livre <strong>de</strong> contexto" significa que para tais linguagens, cuja produção é da forma A ,em uma <strong>de</strong>rivação a variável A <strong>de</strong>riva sem <strong>de</strong>pen<strong>de</strong>r (livre) <strong>de</strong> qualquer análise dos símbolos queantece<strong>de</strong>m ou seguem A (contexto). Assim claramente toda LR é também LLC.Universo <strong>de</strong> Todas as <strong>Linguagens</strong> LLC LR


Exemplo: Árvores <strong>de</strong> Derivaçãoa) G = ({S}, {a, b}, P, S), on<strong>de</strong> P = {S aSb | }.b) G = ({E}, {+, *, [, ], x}, P, E), on<strong>de</strong> P = {E E+E | E*E | [E] | x}.c) Árvore <strong>de</strong> Derivação x DerivaçõesUma única árvore <strong>de</strong> <strong>de</strong>rivação po<strong>de</strong> representar <strong>de</strong>rivações distintas <strong>de</strong> uma mesma palavra ouexpressão. Na árvore representada na figura, a palavra x+ x * x po<strong>de</strong> por exemplo ser geradapelas seguintes <strong>de</strong>rivações:1. E E+ E x+ E x+ E * E x+ x * E x+ x * x2. E E+ E E+ E * E E+ E * x E+ x * x x+ x * x3. E E+ E E+ E * E x+ E * E x+ x * E x+ x * x4. Etc.


Ambiguida<strong>de</strong>Uma GLC é dita uma gramática ambígua se existe uma palavra que possui duas ou mais árvores <strong>de</strong><strong>de</strong>rivação. Ex: x+x*x.Linguagem Inerentemente AmbíguaUma LLC é uma linguagem inerentemente ambígua se qualquer GLC que a <strong>de</strong>fine é ambígua. Ex: L= {w | w = a n b n c m d m ou w = a n b m c m d n , n >= 1, m >= 1} é inerentemente ambígua.Simplificação <strong>de</strong> GLCs• Exclusão <strong>de</strong> variáveis ou terminais não usados para formar palavras <strong>de</strong> terminais,• Exclusão <strong>de</strong> produções vazias, da forma A (se a palavra vazia pertence à linguagem, éincluída uma produção vazia específica para tal fim).• Exclusão <strong>de</strong> produções da forma A B, que simplesmente substituem uma variável por outra,não adicionando qualquer informação <strong>de</strong> geração <strong>de</strong> palavra.• Algoritmos (pag. 100 a 105) Sequência recomendada (1) Exclusão <strong>de</strong> produções vazias, (2)Exclusão <strong>de</strong> produções da forma A B, e (3) Exclusão <strong>de</strong> símbolos inúteis.Formas Normais• Estabelecem restrições rígidas para a <strong>de</strong>finição das produções sem reduzir o po<strong>de</strong>r <strong>de</strong> geração dasGLCs.• São usadas no <strong>de</strong>senvolvimento <strong>de</strong> algoritmos (com <strong>de</strong>staque para reconhecedores <strong>de</strong> linguagense prova <strong>de</strong> teoremas.• Forma Normal <strong>de</strong> Chomsky: Todas as produções são do tipo ABC ou Aa.• Forma Normal <strong>de</strong> Greibach: Todas as produções são da forma Aa , on<strong>de</strong> é uma palavra <strong>de</strong>variáveis.• Algoritmos <strong>de</strong> produção e conversão <strong>de</strong> FNs: pg. 106 a 111.ExercícioDesenvolver as GLCs capazes <strong>de</strong> produzir as seguintes linguagens:a) L1 = {}b) L2 = {&}c) L3 = {a, b}*d) L4 = {w | w e' palíndromo em {a, b}* }e) L5 = {wwr | w é palavra em {a, b}* }f) L6 = {aibjck | i=j ou j=k e i,j,k>=0 }g) L7 = {w | w é palavra <strong>de</strong> {x,y,(,)}* com parenteses balanceados }h) L8 = {w | w é expressão regular }


Autômato com Pilha• Assim como as LR, as LLC po<strong>de</strong>m ser associadas a um mecanismo reconmhecedor do tipoautômato. Neste caso autômatos com pilha.O autômato com pilha é análogo ao autômato finito incluindo uma pilha como memória auxiliar ea facilida<strong>de</strong> do não-<strong>de</strong>terminismoA pilha é in<strong>de</strong>pen<strong>de</strong>nte da fita <strong>de</strong> entrada e possui capacida<strong>de</strong> <strong>de</strong> empilhamento infinita.A pilha é uma estrutura LIFO, conforme ilustrado na figura abaixo. A base <strong>de</strong> uma pilha é fixa e<strong>de</strong>termina o seu início. O topo da pilha é variável e <strong>de</strong>termina a posição do último símbologravado.O não-<strong>de</strong>terminismo é importante e necessário para as LLC. Aumenta o po<strong>de</strong>r computacional dosautômatos com pilha.O autômato com pilha reconhece qualquer LLC, com um único estado (ou três estados,<strong>de</strong>pen<strong>de</strong>ndo da <strong>de</strong>finição). Isto significa que a pilha é suficiente como memória auxiliar, nãosendo necessário empregar estados para memorizar as entradas.Assim a estrutura <strong>de</strong> estados do AP po<strong>de</strong> ser excluída sem comprometer o seu po<strong>de</strong>rcomputacional.


Definição Informal do Autômato com PilhaHá duas <strong>de</strong>finições universalmente aceitas do AP:O valor inicial da pilha é vazio e o autômato para, aceitando a entrada, quando atinge um estadofinal.A pilha contém inicialmente um símbolo especial, <strong>de</strong>nominado "símbolo inicial da pilha". Nãoexistem estados finais e o autômato pára, aceitando a entrada, quando a pilha estiver vazia.As duas <strong>de</strong>finições são equivalentes. No presente estudo adota-se a primeira <strong>de</strong>finição.Um AP ou um APN compõe-se basicamente <strong>de</strong> quatro partes:a) Fita ou Fita <strong>de</strong> Entrada: análoga à fita dos AFb) Pilha: Memória auxiliar que po<strong>de</strong> ser usada livremente para leitura ou gravação.c) Unida<strong>de</strong> <strong>de</strong> Controle: Reflete o estado corrente do autômato. Possui uma cabeça <strong>de</strong> fita e umacabeça <strong>de</strong> pilha.d) Programa ou Função <strong>de</strong> Transição: Comanda a leitura da fita, leitura e gravação da pilha e <strong>de</strong>fineo estado do autômato.A Pilha: A pilha é dividida em células capazes <strong>de</strong> armazenar um único símbolo do alfabeto auxiliar(alfabeto da pilha, po<strong>de</strong> ser igual ao alfabeto <strong>de</strong> entrada). A leitura e a gravação ocorrem sempre notopo. Não possui tamanho fixo nem máximo. O tamanho corrente é igual ao tamanho da palavraarmazenada.A Unida<strong>de</strong> <strong>de</strong> Controle: Possui um número fixo e <strong>de</strong>finido <strong>de</strong> estados. Compreen<strong>de</strong> as seguintesunida<strong>de</strong>s:a) Cabeça da Fita: Unida<strong>de</strong> <strong>de</strong> leitura que acessa uma célula da fita <strong>de</strong> entrada <strong>de</strong> cada vez.Movimenta-se exclusivamente para a direita. É possível testar se a entrada foi completamentelida ou não.b) Cabeça da Pilha: Unida<strong>de</strong> <strong>de</strong> leitura e gravação que se move para cima ao gravar e para baixo aoler um símbolo. Acessa uma célula da pilha <strong>de</strong> cada vez, estando sempre posicionada no topo. Aleitura exlui o símbolo lido. É possível testar se a pilha está vazia. Em uma mesma operação <strong>de</strong>gravação é possível armazenar uma palavra composta por mais <strong>de</strong> um símbolo. Neste caso osímbolo do topo é mais à esquerda da palavra gravada.O Programa: Ou função <strong>de</strong> transição é uma função parcial que <strong>de</strong>pen<strong>de</strong>ndo do estado corrente,símbolo lido da fita e símbolo lido da pilha, <strong>de</strong>termina qual o próximo estado e que palavra <strong>de</strong>ve sergravada na pilha. Possui a facilida<strong>de</strong> do movimento vazio, po<strong>de</strong>ndo mudar <strong>de</strong> estado sem ler da fita.


Definição Formal <strong>de</strong> Autômato com Pilha:Um autômato com pilha não-<strong>de</strong>terminístico (APN), ou simplesmente autômato com pilha (AP) é umasêxtupla:M = ( , Q, , q0, F, V), on<strong>de</strong>:- Alfabeto <strong>de</strong> símbolos <strong>de</strong> entradaQ - Conjunto <strong>de</strong> estados possíveis do autômato, o qual é finito.- Função programa ou <strong>de</strong> transição: : Q x ( { ,?}) x (V { ,?}) 2 QxV *q0 - Estado inicial do autômatoF - Conjunto <strong>de</strong> estados finais, tais que F etá contido em QV - Alfabeto auxiliar ou alfabeto da pilha.Características da Função Programa:A função po<strong>de</strong> não ser total, ou seja, in<strong>de</strong>finida para alguns argumentos do conjunto <strong>de</strong> partida.A omissão do parâmetro <strong>de</strong> leitura, representada por ? representa o teste <strong>de</strong> pilha vazia ou toda apalavra <strong>de</strong> entrada lida.O símbolo na leitura indica a facilida<strong>de</strong> <strong>de</strong> movimento vazio da fita ou da pilha.(o autômato nãolê nem move a cabeça.O símbolose move.na gravação indica que nenhuma palavra é gravada na pilha. A cabeça também nãoPor exemplo: (p,?, ) = {(q, )} indica que no estado p, se a entrada foi completamente lida, nãolê da pilha, assume o estado q e não grava na pilha.O processamento <strong>de</strong> um AP para uma palavra <strong>de</strong> entrada w consiste na sucessiva aplicação dafunção programa para cada símbolo <strong>de</strong> w (da esquerda para a direita) até ocorrer uma condição<strong>de</strong> parada.Entretanto, é possível que um AP nunca atinja uma condição <strong>de</strong> parada. Neste caso ficaprocessando in<strong>de</strong>finidamente (ciclo ou loop infinito).


Um exemplo <strong>de</strong> ciclo infinito é um programa que empilha e <strong>de</strong>sempilha um mesmo símboloin<strong>de</strong>finidamente sem ler da fita <strong>de</strong> entrada.Um AP po<strong>de</strong> parar, aceitando ou rejeitando a entrada, ou ficar em loop infinito da seguintemaneira:a) Um dos caminhos alternativos assume um estado final: O autômato pára e a palavra éaceita.b) Todos os caminhos alternativos rejeitam a entrada: O autômato pára e a palavra érejeitada.c) Pelo menos um caminho alternativo está em loop infinito e os <strong>de</strong>mais rejeitam a entrada,ou também estão em loop infinito: O autômato está em loop infinito.ACEITA(M) ou L(M): conjunto <strong>de</strong> todas as palavras <strong>de</strong> * aceitas por M.REJEITA(M): conjunto <strong>de</strong> todas as palavras <strong>de</strong> * rejeitadas por M.LOOP(M): conjunto <strong>de</strong> todas as palavras <strong>de</strong> * para as quais M entra em loop infinitoEXEMPLO 1:AP M1 = ({a,b}, {q0, q1, qf }, 1, q0, {qf}, {B}) , on<strong>de</strong> 1 é dada por:1(q0, a, ) = {(q0, B)}1(q0, b, B) = {(q1, )}1(q0, ?, ?) = {(qf, )}1(q1, b, B) = {(q1, )}1(q1, ?, ?) = {(qf, )}reconhece a linguagem L1 = {a n b n | n>=0}Este autômato é <strong>de</strong>terminístico. No estado q0, para cada símbolo a lido da fita é armazenado umsímbolo B na pilha. No estado q1 é realizado um batimento, verificando se para cada símbolo bda fita existe um correspon<strong>de</strong>nte B na pilha. O algoritmo somente aceita se ao terminar <strong>de</strong> ler apalavra da fita a pilha estiver vazia.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!