Você está na página 1de 73

|  

  
 

 
  
 

Prof. Luiz Fernando R B Corrêa


|
° | fabetos
° Pa avras sobre um a fabeto
° Linguagens
° Gramáticas
° Gramáticas Irrestrita
Definição
Regras de Produção
Regras de Derivação

 
° Dicionário |uré io:

^ 



  

 


° Para o desenvo vimento matemático de


uma inguagem forma  mais definições
são necessárias.
| 
° àambém chamado de u
u
 
 é um conjunto finito de
Símbo os
° Dm conjunto vazio também é um
a fabeto
° Símbo o (ou caractere)
Entidade abstrata a qua não é definida
forma mente
Ex.: Letras e dígitos
R    
    

° Dma R       


 ou

  sobre um a fabeto é uma
seqüência finita de símbo os (do
a fabeto) justapostos.
Exemp o: 0001

° Pa avra Vazia (İ): pa avra sem


símbo o
R    
    
° Se ƶ representa um a fabeto então ƶ*
denota o conjunto de todas as pa avras
possíveis sobre ƶ.
° ƶ + representa o conjunto de todas as
pa avras sobre ƶ exceto a pa avra vazia
ou seja ƶ+ = ƶ* - {İ}
° Exemp os:
| = {a b}
|* = {İ a b aa ab ba bb aaa aab
...}
Note que |+ ={a b aa ab ba bb aaa
aab ...}
R    
    
  


° àamanho ou Comprimento de uma


pa avra w representado por |w| é
o número de símbo os que compõe
a pa avra.
° O tamanho da cadeia vazia é 0
(zero)

° Exemp os:
° x = 010110 |x| = 6 ; y= İ
|y|=0
R    
    
R 

  

° Prefixo: qua quer seqüência de


símbo os inicia da pa avra
° Sufixo: qua quer seqüência de
símbo os fina da pa avra
° Subpa avra: qua quer seqüência de
símbo os contígua da pa avra
R    
    
R   R 

  
° Exemp os:
a) abcb é uma pa avra sobre o a fabeto
{abc}
b) Se | = {a b} então ƶ+ ={a b aa ab
ba bb aaa aab ...} e ƶ* = {İ a b aa
ab ba bb aaa aab ...}
c) |abcd| = 4 e |İ| = 0
d) ƪ a ab abc abcb são prefixos da
pa avra abcb e İ b cb bcb abcb são os
respectivos sufixos
e) Qua quer prefixo ou sufixo de uma
pa avra é uma subpa avra

   
° Linguagem Forma ou simp esmente
Linguagem L sobre um a fabeto ƶ
L ß ƶ*
° Qua quer um conjunto de pa avras
formado sobre um a fabeto dado

   
° ö (conj vazio) e ´ (conj formado pe a
pa avra vazia) são inguagens sobre
qua quer a fabeto
ö ´
° A e Asão inguagens sobre um ƶ
qua quer
A  A
° Conjunto de pa índromos sobre A´

İ a b aa bb aaa aba bab bbb aaaa



   
° ‰u 
 
 ! 
Conjunto das partes de ƶ*
2ƶ*
° ‰ "
 
#


Linguagem de programação como Pasca
conjunto de todos os programas (pa avras) da
inguagem
  
° Se x e y são cadeias então a
concatenação de x e y com notação x.y
ou simp esmente xy é a cadeia formada
pe os símbo os de x imediatamente
seguidos pe os símbo os de y.
  
° Se x e y são cadeias então a
concatenação de x e y com notação x.y
ou simp esmente xy é a cadeia formada
pe os símbo os de x imediatamente
seguidos pe os símbo os de y
° Exemp os:
Se x = abc e y = def  então x.y = abcdef
Se x =345 e y=6789 então xy=3456789
  
R 
 

° Suponha v w t pa avras. | operação de


concatenação satisfaz às seguintes
propriedades:

a) |ssociatividade:
v(wt) = (vw)t

b) E emento Neutro à esquerda e à Direita


İw = w = wİ
  
R 
 

° | concatenação de duas pa avras sobre


a inguagem L não é necessariamente
uma pa avra de L ou seja não é
fechada sobre L.

° Exemp o: Considere a inguagem de


pa índromos sobre {ab}. |
concatenação das pa avras aba e bbb
resu ta na pa avra ababbb a qua não é
um pa índromo. Portanto a operação de
concatenação não é fechada sobre L.
  
  


° Concatenação de uma pa avra com


e a mesma.

° Representada por wn onde w é a


pa avra e n indica o número de
concatenações sucessivas

° Concatenação Sucessiva de Pa avras


= Potência de Cadeias
  
  


a) Caso 1. w  İ
Ü0 = İ
wn = wn-1w para n>0
b) Caso 2. w= İ
wn = İ para n>0
wn é indefinida para n=0

c) Para İ0 a concatenação


sucessiva é indefinida
  
  


° Exemp os: Sejam w uma pa avra e


a um símbo o. Então:
w3 = www
w1= w
a5 = aaaaa
an = aaaa...a (o símbo o a repetido n
vezes)
R     R  
° Definem as condições de geração das pa avras
da inguagem
° Representação de uma regra de produção (Į ǃ)
Į8ǃ

°Representação abreviada para seqüência de reras


de produção Į 8 ǃ1 Į 8 ǃ2 ... Į 8 ǃn (mesma
componente do ado esquerdo)
Į 8 ǃ1 | ǃ2 |  | ǃn
R     R  
° Dma produção ou regra de produção é
um par ordenado (D x) usua mente
escrito D ::= x onde D é um símbo o e x é
uma cadeia finita não vazia de símbo os.
D é a parte esquerda e x é a parte direita
da produção. Nós usaremos a abreviação
regra para nos referirmos à regra de
produção.
° Exemp o:
° < etra>::= a | b | c | ... | x | y | z | | | B
| C | ... | X |Y | Z
° <string>::=< etra> | < etra> <string>
R     R  
!
Criação de uma inguagem que não é
regu ar: a inguagem das cadeias na forma
0n1n (n ocorrências do símbo o 0 seguidas
de n ocorrências do símbo o 1) para todo n
> 0. Exemp os de cadeias dessa inguagem
são dados abaixo:
01
0011
000111
00001111
etc.
R     R  
!
° Regras usam símbo os auxi iares
chamados $ 
  : ponto de
partida para gerar as cadeias da
inguagem.

° No exemp o basta usar um símbo o não-


termina X (poderia ser outra etra
qua quer).

° %
  : 0 e 1
R     R  
!
° Regras usam símbo os auxi iares
chamados $ 
  : ponto de
partida para gerar as cadeias da
inguagem.

° No exemp o basta usar um símbo o não-


termina X (poderia ser outra etra
qua quer).

° %
  : 0 e 1
R     R  
!" #    
° Para a menor cadeia (01)
X 01
° Mas para cada 0 no início tem de ter um 1
no fim
X 0X1

° Portanto a gramática para reconhecer a


inguagem das pa avras na forma 0n1n é
composta pe o conjunto de regras:
X 01
X 0X1
R     R  
!" #    
° Para gerar uma pa avra iniciamos no
símbo o X e seguimos um processo em
que repetidamente substituímos uma
ocorrência de X pe o ado direito de
a guma das regras. Os demais símbo os
da cadeia que está sendo formado são
mantidos ina terados. Esse processo é
chamado de derivação de uma cadeia.
Ex.: 0011
fð åf ð åå
R     R  
!" #    
° Ex.2: 000111
fð å
fð åf ð ååf ð ååå

° Para a cadeia pertencer à inguagem que a


gramática representa não pode ter símbo os
não-terminais (no caso X)
# 

° Linguagem de programação
definida pe o conjunto de todos os
programas (pa avras)
° Linguagem de propósitos gerais como
Pasca
conjunto de todos os programas é infinito
não é definição adequada para
imp ementação em computador
° Forma ismo Gramática
uma maneira de especificar de forma finita
inguagens (eventua mente) infinitas
# 

° Gramática é basicamente
conjunto !   de


quando ap icadas sucessivamente geram
pa avras
conjunto de todas as pa avras geradas por
uma gramática
°  define a  
° Gramáticas para inguagens naturais como
Português
as mesmas que as usadas para inguagens
artificiais como Pasca
° Gramáticas também são usadas para definir
semântica
# 

$


Representada pe a 4-up a
G = (V à P S)

° V conj i 
     

 
° à conj i 
  
   

° P: (V 5 à)+ 8 (V 5 à)* re ação i 
R
 par da re ação: regra de produção ou produção
° S e emento distinguido de V: símbo o inicia ou
variáve inicia
# 

$

" $   
G = (V à P S)

° é o a fabeto que contém os símbo os $



  ou 
&   que são os símbo os
auxi iares no processo de geração de cadeias
(como o símbo o X do exemp o). Em uma
gramática bem ajustada cada não-termina tem
regras que permitem que e e gere uma cadeia ou
parte de uma cadeia da inguagem.

° é o a fabeto dos % 


   que são
os símbo os usados nas cadeias da inguagem (0
e 1 no exemp o).
# 

$

" $   
G = (V à P S)

° #é o conjunto das



ou 
'

&  que servem para gerar as pa avras
da inguagem. Cada regra tem a forma N 8 a1
onde:
N é chamado de da produção e consiste
simp esmente em um símbo o não-termina (ou seja N
L V).
o a1 é chamado de corpo da produção e consiste em
qua quer cadeia formada de símbo os terminais e/ou
não-terminais inc usive a cadeia vazia İ.
Podemos er a produção N 8 a1 como ³N gera a1´.
Dizemos também que esta é uma produção ³de N´
porque N é a cabeça.
# 

$

" $   
G = (V à P S)

° é o símbo o não-termina de início (S L V) pois


é usado para  
as derivações de cadeias da
inguagem.
# 

$

" $   
° Para definir a gramática vista no exemp o
anterior (para representar as pa avras 0n1n) de
maneira comp eta. Chamando a gramática de
G1 teríamos a seguinte definição:
½ (´f´å ´f8 å f8 åf f

° Como há várias regras com uma mesma cabeça


podemos representar uma só vez a cabeça e
separar os corpos pe a barra vertica ³|´ que
pode ser ida como ³ou´. | definição ficaria:

½ (´f´å ´f8 å )åf f


# 

%
° Vamos uti izar a gumas convenções nas
gramáticas de exemp o deste materia  de
forma a faci itar o entendimento:
|s etras maiúscu as representarão
símbo os não-terminais.
àodos os outros símbo os serão
considerados terminais
automaticamente.
| cabeça da primeira produção será o
símbo o inicia .
# 

$

" !&
° Seja uma gramática G2 que representa cadeias
que têm a forma de expressões aritméticas com
os operadores de adição (símbo o +) e
mu tip icação (símbo o x). Para simp ificar
vamos traba har apenas com números binários.
Exemp os de cadeias que e a gera são dados
abaixo:
10
1+100
0x1+1
° Definir V à P S
# 

$

" !&
# 
‰8 *)‰‰)‰‰
*8 å) )å*) *

° De acordo com as convenções:


Conjunto de não-terminais da gramática: {E N}
Sendo E o símbo o de início pois e e aparece na cabeça
da primeira produção.
Símbo os terminais são os símbo os restantes ou seja:
{+ x 0 1}.
°|ssim a definição comp eta da gramática G2
seria:
½ (´‰*´å # ‰# +
  
# 

$
 

° |p icação de uma regra de produção

° |p icação sucessiva de regras de


produção permite derivar as pa avras
da inguagem representada pe a
gramática

° Substituição de uma subpa avra de


acordo com uma regra de produção
# 

$
 

° |p icação de uma regra de produção é


denominada derivação
° |p icação sucessiva de regras de
produção
fecho transitivo da re ação de derivação
permite derivar pa avras da inguagem
# 

$
 
Seja a gramática G = (V à P S)

 é um par da ,

denotada por ð
%  em (V 5 à)+ e %  em (V 5 à)*
(Į  ǃ) é representado de forma infixada

ð -
ð é indutivamente definida como segue:
para 
da forma S 8 ǃ (S é o
símbo o inicia de G)
ð -
para 
.ð /
0da re ação de derivação
° se
8 -é regra de P então
.ð /-0
# 

$
 
° Portanto derivação
substituição de uma subpa avra
de acordo com uma regra de produção
° Sucessivos passos de derivação
ð* fecho transitivo e ref exivo da re ação ð
° zero ou mais passos de derivações sucessivos
ð+ fecho transitivo da re ação ð
° um ou mais passos de derivações sucessivos
ðI
° exatos i passos de derivações sucessivos (i
natura )
# 

$
 " R   
1. Escreva o símbo o não-termina de início.
Este símbo o sozinho será a cadeia inicia
com a qua você vai traba har.

2. Esco ha uma ocorrência de um não-


termina N qua quer na cadeia e esco ha
a guma produção de N. Na cadeia
substitua a ocorrência de N pe o corpo da
produção.

3. Repita o passo 2 até que não reste


nenhuma variáve .
# 

$
 " R   " '
° ½ (
'
E8N
| E+E
| ExE
N80
|1
| 0N
| 1N
# 

$
 " R   " '
° Passo 1: partir do símbo o de início que
é o símbo o E

E
# 

$
 " R   " '
° Passo 2: esco her um símb não-termina
(só temos o E por agora) e uma
produção de e (qua quer uma das 3 de
E). Esco hemos E 8 E+E. Portanto
vamos trocar a ocorrência de E por E+E.
Co ocamos o símbo o ð para indicar
³deriva´.
E
ð E+E
# 

$
 " R   " '
° Bem agora temos duas ocorrências do
símbo o E. Podemos esco her qua quer
uma de as para o próximo passo da
derivação. Vamos esco her a segunda
ocorrência de E e vamos ap icar a
produção E 8 N:

E+E
ð E+N
# 

$
 " R   " '
° |gora podemos esco her ivremente
entre E ou N e depois usar quaisquer das
produções destes símbo os. Vamos
esco her N (em negrito) e usar a sua
produção N 8 0:
E+N
ð E+0
# 

$
 " R   " '
° |gora você já deve estar se
acostumando com o processo então
vamos dizer apenas a produção que
vamos ap icar. Se esco hermos ap icar E
8 N teremos:
E+0
ð N+0
° |gora vamos ap icar N 8 1.

N+0
ð 1+0
# 

$
 " R   " '
° Só tem símbo os terminais ogo a
derivação está comp eta

E
ð E+E
ð E+N
ð E+0
ð N+0
ð 1+0
# 

$
 " R   "  
 

Gerar: 1 + 0

s ide 50
# 

(    $
 
° Derivação de pa avras na forma de
árvore
partindo do símbo o inicia como a raiz
terminando em símbo os terminais como
fo has
° Conveniente em muitas ap icações
Compi adores
processadores de textos
# 

(    $
 
° Derivação de 
 na forma de
árvore
partindo do símbo o inicia como a raiz
terminando em símbo os terminais como
fo has
° Conveniente em muitas ap icações
Compi adores
processadores de textos
# 

(    $
 
° , 1: símbo o inicia
° +
  

: variáveis
se | é um vért interior e X1 X2Xn são os
"fi hos" de |
° | 8 X1X2Xn é uma produção da gramática
° X1 X2Xn são ordenados da esq para a direita

° +
!2ou !2: termina ou o símb vazio
se vazio: único fi ho de seu pai (| 8 İ)
# 

(    $
 ) !

° G1 = ({S} {ab} P1 S}


° P1 = {S  aSb | S  İ}
° Exemp o: aabb
# 

(    $
 ) !

° G2 = ({E} {+*x} P2 E}


° P2 = {E  E+E | E*E | E | x}
° Exemp o: x+x*x
# 

(    $
 ) !
° Dma árvore de derivação
pode representar derivações distintas de uma mesma
pa avra
° 6


3 
'
E ð E+E ð x+E ð x+EE ð x+xE ð x+xx mais a esquerda
E ð E+E ð E+EE ð E+Ex ð E+xx ð x+xx mais a direita
E ð E+E ð E+EE ð x+EE ð x+xE ð x+xx
etc
# 

(    $
 
° 
 4‰5
(
 
Seqüência de produções ap icada sempre à variáve
mais à esquerda (direita) da pa avra
° ‰
 4‰5
(
 

E ð E+E ð x+E ð x+EE ð x+xE ð x+xx mais a
esquerda
E ð E+E ð E+EE ð E+Ex ð E+xx ð x+xx mais a
direita
# 

(    $
 
° 
 4‰5
(
 
Seqüência de produções ap icada sempre à variáve
mais à esquerda (direita) da pa avra
° ‰
 4‰5
(
 

E ð E+E ð x+E ð x+EE ð x+xE ð x+xx mais a
esquerda
E ð E+E ð E+EE ð E+Ex ð E+xx ð x+xx mais a
direita

 #
° Dada a gramática G = (V à P S)
° Linguagem Gerada por G: L(G) ou
GER|(G)
àodas as pa avras de símbo os
terminais deriváveis a partir do símbo o
inicia S ou seja:
(½´6L  )ð6
# 
 $
 
'#
!) *

° G = (V à P N)
V = { N D }
à = { 0 1 2 9 }
P = { N 8 D N 8 DN D 8 0 | 1 |  | 9 }
° Gera      o conjunto dos
números naturais
° Õ se distinguem os zeros à esquerda
° Õ exemp o: 123 de 0123
# 
 $
 
'#
!) *

° Dma derivação do número 243


Nð N 8 DN
DN ð D 8 2
2N ð N 8 DN
2DN ð D 8 4
24N ð N 8 D
24D ð D 8 3
243
° N ð DN ð 2N ð 2DN ð 24N ð 24D ð 243
# 
 $
 
'#
!) *

° Portanto
S ð* 243
S ð+ 243
S ð6 243
# 
 $
 
'#
!) &

Seja G = ({ S X Y | B F } { a b } P
S) onde:
P = { S 8 XY
X 8 Xa| | XbB | F
|a 8 a| |b 8 b| |Y 8 Ya
Ba 8 aB Bb 8 bB BY 8 Yb
Fa 8 aF Fb 8 bF FY 8 İ }
gera a inguagem:
{ ww | w é pa avra de { a b }* }
# 
 $
 
'#
!) &
° Derivação de baba
Sð S 8 XY
XY ð X 8 Xa|
Xa|Y ð |Y 8 Ya
XaYa ð X 8 XbB
XbBaYa ð Ba 8 aB
XbaBYa ð BY 8 Yb
XbaYba ð X8F
FbaYba ð Fb 8 bF
bFaYba ð Fa 8 aF
baFYba ð FY 8 İ
baba
# 

# 
 !+
 
° G1 e G2 são Gramáticas Equiva entes
se e somente se
½‰, (½ ½‰, (½ 
(  |,
° Gramática que possui duas (ou
mais) árvores de derivação distintas
para a guma pa avra.

° Não exige que existam duas árvores


de derivação para
   
 

   
derivação para 2  
       

s ide 66
(  |,
Mesmo exemp o

Vamos começar ana isando a


pa avra   . Já criamos uma
árvore de derivação para e a há
pouco será que é possíve
criarmos outra árvore para
  ?
| árvore de derivação que criamos
antes para a pa avra  
começa pe a produção ‰ 8 ‰‰. É
possíve gerar a mesma pa avra
começando pe a produção ‰ 8
‰‰?
(  |,

6rvores diferentes que geram a mesma pa avra:  


*   Não existe um a goritmo para identificar se uma gramática
ivre de contexto qua quer é ambígua. Por esse motivo identificar
ambigüidades em gramáticas ivres de contexto não é uma tarefa
muito fáci .
(   |, ) R 

Prove que a gramática H definida abaixo é ambígua.
(Dica: use a cadeia abc para provar).
¨:
S p XC
| |Y
X p aXb |
Y p bYc |
C p cC |
| p a| |

S => XC => aXbC => abC =>


abcC => abc (corresponde à
árvore 1)
S => |Y => a|Y => aY =>abYc
=> abc
(corresponde à árvore 2)
! ,

1. Com base na gramática G1 dada
antes mostre uma árvore de
derivação para a pa avra 000111.
2. Com base na gramática G2 dada
antes mostre uma derivação e uma
árvore de derivação para a pa avra
000111.
! ,

3. Considere a gramática G3 definida
abaixo. Diga se e a gera as pa avras
abaixo. Construa uma derivação e
uma árvore de derivação para as
pa avras que a gramática puder
gerar. ½
S 8 aSa
a) İ | bSb
b) ab |à
à8a
c) aba |b
d) baa |İ
e) babab
! ,

4. Dadas as cadeias de caracteres
abaixo mostre quais são os sufixos
próprios e as sub-cadeias próprias de
cada uma de as:
Carro
1351
! ,

5. Considerando a seguinte gramática
<número> ::= <numero><sinais> <numero> | <dígito>
<dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<sinais>::= +|-
V = {0 1 2 3 4 5 6 7 8 9 <número> <dígito>}
Para cada umas das cadeias abaixo responda:
-55
3+8
4+9-6
3<sinais><digito>
<digito>
a) a) Quais são ou não reconhecidas pe a gramática?
b) b) Derive as que forem.