Você está na página 1de 2

Regras para formao de gramticas livres de contexto:

Seja = { a, b, c }: Tabela 1: conjunto de regras para formao de G.L.C. Linguagem Gramtica L = {w | a*} P aP | + P aP | a L = {w | a } n n P aPb | L = {w | a b , n 0 } n n P aPb | c L = {w | a cb , n 0 } P AB + n n A aA | a L = {w | a b abc(ab) , n 0 } B bBab |abc Observao: toda G.L.C. definida como G = (V, , R, P), em que V representa o conjunto de variveis ou no terminais; representa o alfabeto ou conjunto de terminais; R definido como conjunto de regras; e, por fim, P a varivel de partida. NOTA: toda G.L.C. composta por uma ou mais regras da Tabela 1. EXEMPLOS: a) L1 = { 0 1 | n 0 } U L2 = {0 1 | n 0 }, deve-se construir duas gramticas e unilas por uma varivel de partida, por exemplo P L1 | L 2 n k b) L = { 0 1 | n k 2n } n n K c) L = { 0 1 0 | n, k 0} m n d) L = { 0 1 | m > n } DICA: para desenvolver as gramticas acima, basta perceber quais so as regras de formao que a compem. Um timo comeo criar exemplos de palavras que pertenam gramtica e, depois, verificar por quais regras acima a gramtica composta. EXERCCIOS: pgina 198 exerccios 2 e 3 do livro do Newton Jos Vieira.
n n n 2n

AMBIGUIDADE
Para saber se alguma gramtica ambgua, basta verificar se existem duas rvores de derivao para uma D.M.E ou D.M.D de uma palavra. s vezes, removendo a recursividade esquerda tambm remove a ambiguidade, mas isso no uma regra geral. Para remover a ambiguidade deve-se analisar a gramtica.

Manipulao de Gramticas
Regras Forma Exemplo
AB | Aa X Ba | BAB A B Bb | Para remover a varivel anulvel B , primeiro deve-se verificar onde a varivel B aplicada, depois, substitua toda a varivel B por , ou seja, vazio, e verifique o que sobrou. Por exemplo, eliminando a varivel anulvel B para a produo B Bb, mantenha a produo Bb e substituindo B por sobra b, ento a nova produo seria: B Bb | b. Repetindo as operaes tem-se: X AB | Aa | A | A Ba | a| BAB | BA | AB | A B Bb | b Veja que a produo anulvel migra para a varivel de partida X. Para eliminar uma varivel unitria, basta trazer todas as produes da varivel da produo, que, neste caso Y (varivel do lado direito da produo), para X (varivel do lado esquerdo da produo). Utilizando o exemplo anterior: X AB | Aa | A | A Ba | a| BAB | BA | AB | A B Bb | b Existem as seguintes variveis anulveis: X AeA A. Seguindo a regra definida acima, necessrio trazer todas as produes de A para X. Como a produo A A, uma varivel que gera ela mesma, ento basta exclu-la pois a varivel A j possui suas prprias regras. Ento, a gramtica ficaria assim: AB | Aa | Ba | a| BAB | BA | AB | X A Ba | a| BAB | BA | AB (veja que a regra A A foi removida) Bb | b B Uma varivel considerada intil se a partir da varivel de partida por meio de vrias derivaes no possvel alcan-la (P * uXv) ou a partir das produes/regras da varivel no possvel gerar nenhuma palavra pertencente linguagem (uXv * w). Por exemplo, seja a gramtica que gera apenas um a: P AB | a B b c C C intil porque no alcanvel a partir da varivel de partida. A intil porque no gera nenhuma palavra pertencente linguagem, neste caso, no existe produo/regras para a varivel A. B tambm intil, apesar de conseguir atingir a varivel B pela varivel de partida ela no gera nenhuma palavra pertencente linguagem. No fim, a gramtica sem variveis inteis : P a.

Eliminao de variveis anulveis

Eliminao de X Y, Y uma variveis unitrias varivel

Eliminao de variveis inteis

Definio de varivel til: P * uXv * w Seja u e v produes.

Observao: existe uma sequncia correta para se realizar manipulaes na gramtica que chamada de sequncia de eliminaes consistente. Essa sequncia deve ser seguida porque quando se efetua uma eliminao podem ser geradas outras regras no desejadas. A sequncia correta : 1) eliminao de variveis anulveis; 2) eliminao de variveis unitrias; 3) eliminao de variveis intei.