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

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

Linguagens Livre de Contexto ::= | | | ::=if then else ::=while do ::=begin end ::= ; | ::= :=

Apresentações semelhantes


Apresentação em tema: "Linguagens Livre de Contexto ::= | | | ::=if then else ::=while do ::=begin end ::= ; | ::= :="— Transcrição da apresentação:

1 Linguagens Livre de Contexto ::= | | | ::=if then else ::=while do ::=begin end ::= ; | ::= :=

2 ::= ::= ||||=| ::= | | ( ) ::=+ | - | *| / ::=0|1|2|3|4|5|6|7|8|9 ::=a|b|c|…|x|y|z BNF (Backus-Naur form)dando a definição formal de uma linguagem de programação.

3 Mais Exemplos L = {a n b n |n 0} é livre de contexto. Se em L substituirmos a por ( e b por ), cadeias de parênte-ses tais como ( ( ) ) e ( ( ( ) ) ) estarão em L. L descreve uma estrutura aninhada comum em linguagens de progra- mação.

4 Gramáticas Livre De Contexto As produções numa gramática regu- lar são restritas de duas formas: –o lado esquerdo deve conter uma única variável, –enquanto o lado direito tem uma forma especial. Para criar uma gramática mais poderosa, devemos relaxar algumas dessas condições.

5 Mantemos a restrição sobre o lado esquerdo, mas permitimos qualquer coisa no lado direito. Definição: Uma gramática G= é livre de contexto se todas as produções em P tem a forma A x, onde A V e x (V T)*.

6 A linguagem L é livre de contexto sss existe uma gramática livre de contexto G tal que L = L(G). Obs: Toda linguagem regular é livre de contexto.

7 Exemplos G=, com produ- ções S aSa; S bSb, S Uma derivação típica nessa gramática é S aSa aaSaa aabSbaaa aabbaa Isto torna claro que L(G)={WW R |W {a, b}*}

8 Mais Exemplos A gramática G=, onde P é S abB; A aaBb; B bbAa; A L(G)={ab (bbaa) n bba (ba) n |n 0}

9 Derivação Mais à Esquerda e Mais à Direita G= com produções: 1. S AB; 2. A aaA; 3. A ; 4. B Bb; 5. B. L(G)={a 2n b m |n 0, m 0} S 1 AB 2 aaAB 3 aaB 4 aaBb 5 aab S 1 AB 4 ABb 2 aaABb 5 aaAb 3 aab

10 Definição: Uma derivação diz-se mais à esquerda se em cada etapa a variável mais a esquerda é trocada na forma sentencial. Se em cada etapa a variável mais a direita é trocada, dizemos que a derivação é mais à direita.

11 Exemplos Considere a gramática com produ- ções S aAB, A bBb, B A| uma derivação mais à esquerda da cadeia abbbb: S aAB abBbB abAbB abbBbbB abbbB abbbb uma derivação mais à direita: S aAB aA abBb abAb abbBbb abbbb.

12 Mostra derivações independente da ordem em que as produções são usadas. Uma árvore de derivação é uma árvore ordenada onde: –os nodos são rotulados com os lados esquerdos das produções e –o filho de cada nodo representa seus correspondentes lados direitos. Árvores de Derivação

13 Exemplo A a b A B c A abABc

14 Definição Seja G= uma gramática livre de contexto. Uma árvore ordenada é uma árvore de derivação para G se e somente se ela tem as seguintes propriedades: 1. A raiz tem rótulo S 2. Toda folha tem rótulo de T { } 3. Todo vértice interior tem um rótulo de V.

15 4. Se um vértice tem rótulo A V, e seus filhos são rotulados(da es- querda para direita) a 1, a 2, …,a n, então P deve conter uma produção da forma A a 1 a 2 …a n 5. Uma folha rotulada o seu pai não tem nenhum filho além dàquele rótulado.

16 árvore de derivação parcial: Uma árvore que tem as proprieda- des 3, 4 e 5 mas não necessaria- mente 1 e a propriedade 2 é trocada por: 2a.Toda folha tem rótulo em V T { }

17 cadeia gerada A cadeia de símbolos obtida lendo-se, da esquerda para à direita, omitindo qualquer encontrado, diz-se gerada pela árvore. Exemplo: Considere a gramática G, com produções S aAB A bBb B A |

18 Exemplo (a) A árvore (a) é uma ár- vore de derivação par- cial para G. A cadeia abBbB, gera- da pela árvore, é uma forma sentencial de G. S aB A bBb a)(

19 Exemplo (b) a árvore (b) é uma árvore de derivação. A cadeia gerada, abbbb é uma sentença de L(G). S a A bBb B A bBb (b)

20 Relação entre Formas Sentenciais e Árvores de Derivações Árvores de derivação dão uma des- crição explícita e compreensível de derivações. Assim como grafo de transições para autômatos finitos, elas são úteis nos argumentos.

21 Teorema Seja G= uma gramática livre de contexto. Então pra todo w L(G) existe uma árvore de derivação G cuja cadeia gerada é w. Inversamente a cadeia gerada por qual- quer árvore de derivação está em G. Além disso, se t G é qualquer árvore de derivação parcial para G cuja raiz é rotulada S, então t G gera uma forma sentencial de G.

22 Prova Primeiramente, mostraremos que para toda forma sentencial de G existe uma árvore de derivação parcial. Faremos isso por indução no número de etapas da derivação.

23 Prova (cont.): base Como base, observemos que a afir- mação é verdadeira pra toda forma sentencial derivada em uma etapa. Como S u implica que existe uma produção S u, isto segue imediata- mente da definição da árvore de derivação.

24 Prova(cont.): passo Suponhamos que para toda forma sentencial derivável em n etapas, existem uma árvore de derivação parcial correspondente.

25 Prova(cont.): passo Agora qualquer w derivável em n+1 etapas deve ser tal que S *x A y, x, y (V U T)*, A V em n etapas, e x A y x a 1, a 2 …a m y = w, a i V T.

26 mas por hipótese de indução existe uma árvore de derivação parcial que gera x A y. como G deve ter produção A a 1 a 2 …a m, expandindo as folhas rotuladas A, obtemos uma árvore de derivação parcial que gera w. Logo, por indução, o resultado é verdadeiro para toda forma senten- cial.

27 Usando um argumento análogo, podemos mostrar que toda árvore de derivação parcial representa alguma forma sentencial. Uma árvore de derivação é uma árvore de derivação parcial cujas folhas são terminais. Logo toda sentença em L(G) é gerada por alguma árvore de deri- vação de G e toda árvore de derivação gerada está em L(G). q.e.d

28 Árvores de derivação mostram quais produções são usadas para se obter uma sentença, mas não dá a ordem de suas aplicações. Árvores de derivações são capazes de representar qualquer derivação, refletindo o fato de que esta ordem é irrelevante, uma observação que nos permite fechar o buraco na discussão anterior.

29 Por definição, qualquer w L(G) tem uma derivação mais a esquerda e uma mais a direita. dada uma árvore de derivação, po- demos sempre obter uma derivação mais a esquerda pensando na árvore como tendo sido construída de tal modo que a variável mais a esquerda foi sempre expandida primeiro. Todo w L(G) tem pelo menosuma derivação mais a esquerda e uma mais a direita.


Carregar ppt "Linguagens Livre de Contexto ::= | | | ::=if then else ::=while do ::=begin end ::= ; | ::= :="

Apresentações semelhantes


Anúncios Google