Em algumas aplicações, como compiladores e processadores de textos, frequentemente é conveniente representar a derivação de palavras na forma de árvore, partindo do símbolo inicial como a raiz, e terminando em folhas de terminais. Apresente a árvore de derivação da entrada e(a;a;a;a) sobre a gramática livre do contexto apresentada a seguir.
G = ({S, A, B, C, X, Y}, {a, e, (, ), ;}, P, S) P = {S → A) A → CB B → ;XB | ε C → Y(X X → a Y → e}
Eventualmente, uma mesma palavra pode ser associada a duas ou mais árvores de derivação, determinando uma ambiguidade. Em muitas aplicações como, por exemplo, no desenvolvimento e otimização de alguns tipos de algoritmos de reconhecimento, é conveniente que a gramática usada não seja ambígua. Prove que a seguinte gramática livre do contexto é ambígua:
G = ({S}, {a, b}, {S → SS | a | b}, S)
Desenvolva uma gramática livre do contexto equivalente (que gere a mesma linguagem) a gramática livre do contexto apresentada na questão 02, mas que não seja ambígua.
G = ({S}, {a, b}, {S → Sa | Sb | a | b}, S)
A exclusão de produções vazias (da forma S → ε) pode determinar diversas modificações nas produções de uma gramática livre do contexto, visando a total eliminação desse tipo de produção. Por exemplo, a variável D, da gramática livre do contexto apresentada a seguir, possui originalmente 3 (três) produções, mas ao final da execução do algoritmo de exclusão de produções vazias, a variável D terá 4 (quatro) produções. Quantas produções a variável F terá após a execução do algoritmo de exclusão de produções vazias?
G = ({A, B, C, D, E, F, G, H}, {x, y, z}, P, A) P = {A → F | zBC B → Gx | yADz C → AD | yz | BH D → Cxy | ε | Az E → CDA | y F → D | AxCDyA G → EA | xyE H → AyC | DCz}
A exclusão de símbolos inúteis (não usados na geração de palavras de terminais) é realizada excluindo as produções que fazem referência a estes símbolos, bem como os próprios símbolos inúteis. Considerando a gramática livre do contexto apresentada a seguir, qual será o conjunto de variáveis após a execução do algoritmo de exclusão de símbolos inúteis?
G = ({S, R, X, Z, W, Y, K, T, A}, {a, b, c}, P, S) P = {S → Wb | bT R → XbbA | YaZb X → Kc | aWb Z → c | Ab | cWb W → abX | KAc Y → AZc | KaX K → XR | WA T → S | Ta | KX | a}
Uma produção da forma A → B não adiciona informação alguma em termos de geração de palavras, a não ser que a variável A possa ser substituída por B. Neste caso, se B → α, então a produção A → B pode ser substituída por A → α. Por exemplo, a variável F, da gramática livre do contexto apresentada a seguir, possui originalmente 2 (duas) produções, mas ao final da execução do algoritmo de exclusão de produções da forma A → B, a variável F terá 3 (três) produções. Quantas produções a variável A terá após a execução do algoritmo de exclusão de produções da forma A → B?
G = ({A, B, C, D, E, F}, {x, y, z}, P, A) P = {A → xBy | C B → zCx | CD C → E | xA | F D → EF | Axy E → xyz | B F → D | xBC}
As formas normais estabelecem restrições rígidas na definição das produções, sem reduzir o poder de geração das gramáticas livre do contexto, sendo usadas principalmente no desenvolvimento de algoritmos (com destaque para reconhecedores de linguagens) e na prova de teoremas. Converta a gramática livre do contexto apresentada a seguir para a Forma Normal de Greibach.
G = ({S, W, A}, {x, y, z}, P, S) P = {S → WA | z W → WAy | y A → SxW}
G = ({A, B, B₀, C, X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, Y₀, Y₁, Y₂, Y₃, Y₄, Y₅}, {x, y, z}, P, A) P = {A → yB₀C | yC | z B → yB₀ | y B₀ → yB₀CX₀BY₀B₀ | yCX₁BY₁B₀ | zX₂BY₂B₀ | yB₀CX₃BY₃ | yCX₄BY₄ | zX₅BY₅ C → yB₀CX₆B | yCX₇B | zX₈B X₀ → x X₁ → x X₂ → x X₃ → x X₄ → x X₅ → x X₆ → x X₇ → x X₈ → x Y₀ → y Y₁ → y Y₂ → y Y₃ → y Y₄ → y Y₅ → y}
Analise a gramática apresentada a seguir.
G = ({S, A, B, C}, {a, b},P, S) P = {S → aAbab aAb → aabbA | ab bAb → bbA bAa → baB aBa → aaB aBb → Caabb aCa → Caa bC → Cb aCb → aAb}
Sobre essa gramática, assinale a alternativa correta: