Escolar Documentos
Profissional Documentos
Cultura Documentos
s vezes conveniente ter GLCs em uma forma simplificada Uma das formas mais simples a Forma Normal de Chomsky Ela til para a construo de algoritmos que trabalham com gramticas livres de contexto
Uma GLC est na Forma Normal de Chomsky se toda regra pertence a um dos formatos
A BC Aa
onde a um terminal qualquer e A, B e C so variveis quaisquer, exceto pelo fato de que B e C no podem ser variveis iniciais Permite-se tambm a regra S , onde S a varivel inicial
Teorema
Qualquer linguagem livre de contexto pode ser gerada por uma gramtica na forma normal de Chomsky
Para provar isso, mostramos que qualquer GLC pode ser convertida na forma normal de Chomsky Essa converso tem vrios estgios em que as produes que violam as condies da forma normal so substitudas por outras que equivalentes que so satisfatrias
Estgios da converso
1.
2. 3. 4.
Adicionar novo smbolo inicial Eliminar regras no formato A Eliminar regras no formato A B Converter as regras restantes nos formatos permitidos na forma normal de Chomsky
Etapa 1:
Adicionar novo smbolo inicial S0 e a regra S0 S, onde S o smbolo inicial original Isso garante que o smbolo inicial no ocorra no lado direito de nenhuma regra.
Etapa 2:
Remover uma regra A , onde A no a varivel inicial Para cada ocorrncia de A do lado direito de alguma regra, gera-se uma nova com aquela ocorrncia excluda Assim, se h uma regra R uAv, onde u e v so strings de variveis e terminais, adicionamos a regra R uv Isso feito para cada ocorrncia de A, ou seja, a regra R uAvAw gera trs novas regras R uvAw, R uAvw, R uvw Se houver a regra R A, adicionamos R , a no ser que esta regra tenha sido removida previamente Repetir at remover todas as -rules
Etapa 3:
Remover uma regra unitria no formato A B Toda vez que houver uma regra B u, adicionamos a regra A u, a menos que esta regra tenha sido removida previamente Repetir at remover todas as regras unitrias
Etapa 4:
Converter as regras remanescentes em regras nos formatos adequados Substitui-se cada regra no formato A u1u2...uk, com k 3 e cada u uma varivel ou terminal, pelas regras A u1A1, A1 u2A2, A2 u3A3, ..., Ak-2 uk-1uk Os Ais so novas variveis Se k 2, substitui-se qualquer terminal ui nas regras anteriores por uma nova varivel Ui, e adiciona-se a regra Ui ui
Exemplo
As regras em cinza acabaram de ser removias, as regras em azul, acabaram de ser adicionadas
Exemplo
Exemplo
Eliminar B
SX X AXA | aB | a AB|X| Bb|
Exemplo
Eliminar A
SX X AXA | aB | a | XA | AX | X AB|X| Bb
Exemplo
Eliminar X X
SX X AXA | aB | a | XA | AX | X AB|X Bb
Exemplo
Eliminar S X
S X | AXA | aB | a | XA | AX X AXA | aB | a | XA | AX AB|X Bb
Exemplo
Eliminar A B
S AXA | aB | a | XA | AX X AXA | aB | a | XA | AX AB|X|b Bb
Exemplo
Eliminar A X
S AXA | aB | a | XA | AX X AXA | aB | a | XA | AX A X | b | AXA | aB | a | XA | AX Bb
Exemplo
Exemplo
Exemplo
Exerccio
Ambigidade
Uma gramtica G dita ambgua se L(G) contm ao menos uma sentena para a qual existe mais do que uma rvore de derivao Isso indesejvel em certas aplicaes, como linguagens de programao, onde qualquer programa deve ter uma nica interpretao Considere a gramtica G = ({E},{a,b,+,*,(,)},P,E) onde P a regra
E E+E|E*E|(E)|a|b
Considere a sentena w = a + b * a.
Ambigidade
Ambigidade
A rvore (1) representa a + b * a como soma de duas subexpresses A rvore (2) representa a + b * a como produto de duas subexpresses
Ambigidade
Ambigidade
A rvore (1), obtida atravs da derivao mais esquerda, representa a + a + a como (a+a) + a A rvore (2), obtida atravs da derivao mais direita, representa a + a + a como a + (a+a)
Ambigidade
Causas da ambigidade de G
G no indica a precedncia entre os operadores + e * (multiplicao tem precedncia maior) G no estabelece associatividade para os operadores (normalmente + e * estabelecem associatividade a esquerda)
Ambigidade
O uso dos no-terminais E, T e F estabelece precedncia entre os operadores A recursividade a esquerda (E E + T e T T * F) estabelece a associatividade a esquerda
Autmatos de Pilha
Os autmatos de pilha (Pushdown Automata) so a classe de autmatos capazes de reconhecer as mesmas linguagens que as gramticas livres de contexto No sero estudados neste momento do curso