Você está na página 1de 1

AULA Nº 5.

2 << anterior próxima >>


(Download da Aula) menu de aulas dúvidas

Gramáticas e Árvores
Gramáticas Livres de Contexto e Árvores Sintáticas
Definição: Uma gramática G = (VN, VT, S, P) é livre de contexto se as produções P
estão são da forma N ® a , onde a Î (VN È VT)* e N Î VN .
Exemplo:

i) E ® T | E + T | E - T
ii) T ® F | T * F | T / F
iii) F ® i | F ** i
E - símbolo inicial , i) , ii) e iii) correspondem à gramática G5.
L(G5): Expressões aritméticas com a variável i.
E ê i - i * i + i ** i
Árvore Sintática
Representa, passo a passo a geração de uma cadeia por uma gramática.

A árvore sintática fornece a estrutura gramatical da cadeia analisada.

E Ü E+ T Ü E - T+ T Ü T - T+ T Ü F - T+ T Ü i - T+ T Ü i -T * F + T Ü...
Definição: Dada uma gramática livre de contexto :

1- A árvore constituída inicialmente pelo nó rotulado S é uma


árvore sintática.
2- A árvore obtida pela substituição de uma folha (nó final),
rotulada N, de uma árvore sintática, pela árvore

onde N ® x1 , x2 ... xn Î P é uma árvore sintática.


Observações:

1- A construção da árvore termina quando todas as folhas forem


terminadas.
2- A cada árvore sintática corresponde pelo menos uma geração.
3- A cada geração corresponde pelo apenas uma única árvore
sintática (embora várias gerações possam ter a mesma árvore
sintática).
4- Qualquer nó não folha é rotulado com um NT de G
5- Um nó NT N e seus nós descendentes imediatos x1 , x2 ... xn
correspondem a uma geração direta N ® x1 , x2 ... xn .

Gramáticas Ambíguas
Definição: Dada uma gramática G = (VN, VT, S, P) ela é ambígua se existir uma
cadeia x Î L(G) para o qual podem ser construídas duas árvores sintáticas
diferentes.
Exemplo: E ® E + E | E * E | i (G6)

G6 é ambígua.
Contra - exemplo:

S ® MN ; M ® a ; N ® b G7
Temos duas gerações:

i. S Ü MN Ü aN Ü ab
ii. S Ü MN Ü Mb Ü ab

Uma única árvore sintática:

Geração Canônica
Para que uma cadeia gerada por uma gramática corresponda a uma única
geração, particulariza-se a geração da seguinte forma: Cada geração direta deve
substituir o NT (não terminal) mais à direita.
Definição: Uma geração direta xNy ® xuy com N Î VN e x, y Î (VN È VT)* é
canônica se y contém apenas símbolos terminais.
Definição: Uma gramática G é ambígua se, e somente se, existir uma cadeia x Î
L(G) para a qual exista mais do que uma geração canônica.
Exemplo: S ® S + S | i (G8)

A cadeia i + i + i tem duas gerações canônicas:

i. S Ü S + S Ü S + S + S Ü S + S + i Ü S + i + i Ü i + i + i
ii. S Ü S + S Ü S + i Ü S + S + i Ü S + i + i Ü i + i + i

Portanto, G8 é ambígua.
Seja a gramática G7 : S ® MN ; M ® a ; N ® b
Esta gramática tem apenas uma geração canônica: S Ü MN Ü Nb Ü ab
Comparação entre Gramáticas de Tipo 2 (Gramática Livre de Contexto) e Tipo 3
(Gramática Regular)
Toda gramática regular é uma gramática livre de contexto.

As produções das gramáticas regulares são mais simples do que as produções das
gramáticas livres de contexto.
Vantagens das Gramáticas Livres de Contexto sobre as Gramáticas Regulares
As gramáticas livres de contexto permitem a construção de árvores sintáticas mais
complexas.
Exemplo: Gramática G5:

i. E ® T | E + T | E - T
ii. T ® F | T * F | T / F
iii. F ® i | F ** i

A gramática regular equivalente à G5 é:

i. E ® iM | i
ii. M ® + E | - E | * E | / E | ** E

Chamamos a esta gramática de G9 .


As árvores sintáticas correspondentes à cadeia i - i * i + i ** i serão:
Para a gramática G5 :

Para a gramática G9 :

Todas as árvores sintáticas de gramáticas regulares são binárias. Cada nó tem:


1- Um descendente terminal;
2- Eventualmente, um descendente NT (não terminal);
A árvore sintática de gramáticas livres de contexto representam precedência entre
as unidades sintáticas.
As gramáticas livres de contexto geram linguagens mais complexas.

i. E ® T | + T | - T | E + T | E - T
ii. T ® F | T * F | T / F
iii. F ® P | F ** P
iv. P ® i | (E)

Chamamos a gramática descrita acima de G10:


É impossível obter-se uma gramática regular que gere linguagens com sentenças
balanceadas.
Exemplo: L = {an bn | n ³ 1} é gerada por: S ® aSb | ab (chamaremos G11)

Autômato com Pilha


Assim como não existe uma gramática regular que gere sentenças balanceadas (ex.:
L = {an bn | n ³ 1}), não existe um autômato finito que a reconheça.
Para reconhecer linguagens geradas por gramáticas livres de contexto precisamos
de autômatos com pilhas.

Gramáticas Livres de Contexto com Expressões Regulares


Lado direito de cada produção com expressões regulares.

Exemplo: S ® aS | b (chamaremos G12), é equivalente a S ® a*b ;

L(G12) = a*b
NT definidos recursivamente

1- N®aN|b a , b Î (VN È
VT)* ou são
N ® a *b expressões
regulares com
símbolos de
VN e VT
2- N ® Na | b

N ® b *a

Você também pode gostar