A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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).

2 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

3 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.

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

5 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.

6 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={a n b n c m |n,m>0} {a n b m c m |n,m>0}

7 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.

8 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.

9 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 B 1 B 2 …B k para k 0, com A, B 1, B k V e a T.

10 Teorema de Normalização Teorema: 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) - { }

11 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) - { }.

12 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 ^

13 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.

14 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.

15 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 k x absurdo !

16 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 k x

17 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 k x Isto contradiz o tamanho mínimo da derivação. Logo as -produções e produções unitárias podem ser descartadas! qed

18 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 A a e a produção A a a, e troque todas as ocorrências de a no lado direito das antigas regras (exceto das regras de forma B a) por A a.

19 Então todas as produções são de uma das duas formas A a ou A B 1 B 2 …B k, k 2 onde os B i 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.

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

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

22 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


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google