Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode.

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Linguagens Livre-de-contexto
1.6- Aplicabilidade do Limite
5.5 – Análise Bottom-Up Tentativa de construir uma árvore sintática para a sentença analisada, começando das folhas, indo em direção à raiz (pós-ordem.
I - Noções dum compilador
LFA - Ambiguidade - Equivalência de gramáticas - Hierarquia de Chomsky
Teoria da Computação FIC– Ciência da Computação
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
Forma Normal de Chomsky
Lema do Bombeamento – Gramáticas Livres do Contexto
Análise Sintática - Continuação
Medida do Tempo de Execução de um Programa
Linguagens Livres de Contexto
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP.
Q={s,q1,…,q10,t,r} ={a,b,c} ={├,■,} Função de transição:
Linguagens Livre de Contexto
Lema da Bomba (Pumping Lemma) para linguagens livre de contexto
esquerda p/ direita,read only
autômatos finitos com transições e
Uma variação do Lema do Bombeamento
Linguagens Sensíveis ao Contexto
Identificando Linguagens Não Regulares
Máquina de Turing e Computabilidade
SISTEMAS LINEARES I Prof. Marlon.
Análise Sintática Ascendente
Relações em uma Gramática
Construção de Compiladores
Construção de Compiladores
Construção de Compiladores
Exercícios Linguagens Formais.
G R U P O S - III.
Métodos de Demonstração
Lema do Bombeamento Linguagens Livres de Contexto
Informática Teórica Engenharia da Computação
Teoria dos Grafos Caminhos e Noção de Grafos com pesos
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Lógica de Predicados Teorema de Herbrand.
Lema do Bombeamento Linguagens Livres de Contexto
Lemas (Sudkamp)  .
Aula 07 – Limite e Continuidade
Gramáticas Livres de Contexto
O problema do emparelhamento máximo
Problemas de Fluxo Máximo
Teorema de Herbrand e Unificação
1 - Equações Diferenciais Ordinárias
Expressões Regulares e Gramáticas
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Capítulo II Gramáticas e Linguagens
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de A[p…q] é menor ou igual.
Compiladores.
BCC101 – Matemática Discreta
Linguagens Livres de Contexto
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Decidibilidade, Corretude, Completude, Consistência

Lemas (Sudkamp) 1. Eliminação da Recursão sobre S (exemplo) S → Sa S → aS 2.
Exercícios de Fluxo em Redes
Anjolina Grisi de Oliveira
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
ESTUDOS DOS TRIÂNGULOS
Reverso de uma Linguagem Regular
1 Decidibilidade continuação…. 2 Teorema: Para qualquer linguagem recursivamente enumerável é indecidível determinar se é finita Prova: Vamos reduzir.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Informática Teórica Engenharia da Computação
Unidade 3 – sistemas lineares
Wellington D. Previero Pontos Extremos.
Comportamento Assintótico
Transcrição da apresentação:

Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode nos dizer se wL(G) é um algoritmo de pertinência o termo análise descreve o modo de achar uma sequência de produções pela qual é derivada wL(G).

análise óbvia se w está L(G): construir todas as possíveis (e.g. as mais à esquerda) derivações e verificar se al-guma coincide com W. análise de pesquisa exaustiva Problemas: não é eficiente; é possível que ele nunca termine wL(G). Por cause de produções da forma AB e A

Ambigüidade Uma gramática livre de contexto G é ambígua se existe wL(G) com no mí-nimo duas árvores de derivação. ambiguidade  a existência de ≥2 derivações à esquerda e à direita.

Exemplo: A gramática com produções SaSb | SS |  é ambígua. aabb tem duas árvores de derivação: S S S S a S b  a b S b a S a b S  

Soluções Re-escrever a gramática tal que exista somente uma análise possível; Associar regras de precedência (como feito em LP com os + e *) Esta solução está completamente fora da gramática. existem exemplos onde é impossível remover a ambiguidade da gramática.

L={anbncm|n,m>0}{anbmcm|n,m>0} Abigüidade Inerente não-ambígua: existe uma gramática para L que é não-ambígua; inerentemente ambígua .se toda gramática para L é ambígua. e.g.: L={anbncm|n,m>0}{anbmcm|n,m>0}

Formas Normais A definição de uma GLC não impõe qualquer restrição no lado direito de uma produção. Em muitas situações (aplicações) é desejável colocar restrições. Estudaremos métodos de transformar uma GLC arbitrária numa equivalente que satisfaz certas restrições sobre sua forma.

Forma Normal de Chomsky Uma gramática livre de contexto está na forma normal de Chomsky se todas as produções são da forma ABC ou Aa onde A, B, C  V e a  T.

Forma Normal de Greibach Uma gramática livre de contexto está na forma normal de Greibach se todas as produções tem a forma Aa B1 B2…Bk para k0, com A, B1, BkV e aT.

Teorema de Normalização Para toda GLC G, existe uma GLC G’ na forma normal de Chomsky e uma GLC G’’ na forma normal de Greibach tal que L(G’’)=L(G’)=L(G) - { }

Remoção de Produções Unitárias AB e -Produções Lema: Para qualquer GLC G=(N, , P, S), exis-te uma GLC G’ sem -produção e sem produção unitária tq L(G’)=L(G) - {}.

Prova Seja P^ o menor conjunto de produ-ções contendo P e fechado sobre as duas regras: (a)Se AB  P^ e B  P^, então A  P^ (b)Se AB  P^ e B  P^, então A  P^

Seja G^ a gramática G^=(N, , P^, S) como P P^: Podemos construir P^ indutivamen-te de P adicionando produções para satisfazer (a) e (b). Seja G^ a gramática G^=(N, , P^, S) como P P^: L(G)  L(G^), obviamente! mas L(G)=L (G^), porque cada nova produção adicionada pode ser simula-da pela produção que a adicionou.

Agora mostramos que para cada cadeias não nulas x, qualquer derivação S*G^ x de tamanho mínimo não usa -produção nem produção unitária. Seja x considere a derivação de tamanho mínimo S*G^ x. Suponha para a contradição que A é usada em algum ponto da derivação S*A  *x com  ou  não nulo.

Sm B  A n A   *x para algum m,n,k0. esta ocorrência de A aparece na derivação quando uma produção da forma B A  é aplicada: Sm B  A n A   *x para algum m,n,k0. Mas pela regra (a) B   está tam-bém em P^, e esta produção poderia ter sido usada neste ponto dando uma derivação menor de x: SmB   n kx absurdo!

SmA Bn  B     kx Um argumento similar mostra que produções unitárias não são usadas em derivações de tamanho mínimo. Seja x   e considere a derivação de tamanho mínimo S*G^ x. Suponha que AB é usada em algum mo-mento S*A  B *x. a ocorrência de B desaparece apli-cando a produção B  mais tarde: SmA Bn  B     kx

Mas pela regra (b), A  está também em P^ e esta produção poderia ter sido usada dando uma derivação menor para x: SmA n  kx Isto contradiz o tamanho mínimo da derivação. Logo as -produções e produções unitárias podem ser descartadas! qed

Transformando para a forma normal de Chomsky. SPG só consideraremos gramáticas sem  - produções e produções unitá-rias: Para cada a, introduza um novo não terminal Aa e a produção Aa a, e troque todas as ocorrências de a no lado direito das antigas regras (exceto das regras de forma B a) por Aa.

Então todas as produções são de uma das duas formas Aa ou AB1B2…Bk, k2 onde os Bi são não terminais. O conjunto de cadeias terminais não muda, somente temos mais um passo(que antes)para gerar um sím-bolo terminal.

Para qualquer produção A B1B2 Para qualquer produção A B1B2. …Bk com K>2, introduza um novo não terminal C e troque esta produção por duas A B1C e C  B2B3 …Bk .. Continue fazendo estas trocas até que todos os lados direitos tenham tamanho no máximo 2.

{anbn | n0} - {} = {anbn | n 1}. Exemplo Derive a gramática na forma normal de Chomsky para o conjunto {anbn | n0} - {} = {anbn | n 1}. pegue gramática para {anbn | n0} : SaSb| Removendo as  - produções temos: S aSb | ab que gera {anbn | n 1}.

Adicionamos não-terminais A, B e trocamos as produções para: S ASB| AB A a B b Adicionamos um não-terminal C e trocamos B ASB por S AC C SB. A gramática na forma normal de Chomsky é S AB|AC A a B b C  SB