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.