UM GERADOR DE ANALISADORES
SINTATICOS
L L 11)A n g e l a M a r i a C a r v a l h o S o u z a
T E S E SUBMETIDA A 0 CORPO DOCENTE DA COORDENACAO DOS PROGRA -
MAS DE P ~ S - G R A D U A C A O DE ENGENHARIA DA UNIVERSIDADE FEDERAL DO R I 0 DE J A N E I R O COMO PARTE DOS R E Q U I S I T O S N E C E S S A R I O S P A -
RA A OBTENCAO DO GRAU DE MESTRE EM
CIENCIAS
( M . S C . )A p r o v a d a p o r : ~ o s k ) L u c a s ~ o u r a o R a n g e l N e t t o ( P r e s i d e n t e ) S u e l i M e n d e s d o s S a n t o s
JMqwwkJa,
L u l s F e r n a n d o L o u r e r o L e g e y R I 0 DE J A N E I R O , R J - B R A S I L JULHO 1 9 8 0FICHA CATALOGRAFICA
SOUZA, ANGELA MARIA CARVALHO
Um Gerador de A n a l i s a d o r e s S i n t á t i c o s LL(1)
1
~ i o de ~ a n e i r o1
1980.V,120 p . , 2 9 , 7 cm (COPPE-UFRJ, M.Sc. E n g e n h a r i a d e S i s t e m a s e Computaqao, 1980)
Tese
-
U n i v e r s i d a d e F e d e r a l d o Rio de J a n e i r o , Faculdade de E c g e n h a r i a .1. A n á l i s e ~ i n t á t i c a I .COPPE/UFRJ I 1 .Um Gerador de A n a l i s a -
iii RE SUMO E s t e t r a b a l h o d e s c r e v e um g e r a d o r d e t a b e l a s d i r e t o
-
r a s d o a n a l i s a d o r s i n t á t i c o LL(1) p a r a g r a m á t i c a s l i v r e de c o n - t e x t o . Se a g r a m á t i c a f o r LL(1) o r e s u l t a d o f o r n e c i d o p e l o g e r a d o r6
a t a b e l a d i r e t o r a do a n a l i s a d o r s i n t á t i c o da g r a m á t i c a dada ou da g r a m á t i c a t r a n s f o r m a d a q u e s e obtem p o r e l i m i n a ~ a o de r e c u r s a o2
e s q u e r d a e f a t o r a g a o . Caso c o n t r á r i o o g e r a d o r i n d i c a t o d o s os c o n f l i t o s e n c o n t r a d o s . E s t 5 o i n c l u í d o s exem -p l o s e o modo d e u t i l i z a g a o d o programa e s c r i t 0 em A l g o l Exten
-
d i d o B 6 7 0 0 do N C E da UFRJ.ABSTRACT
We d e s c r i b e h e r e a n LL(1) p a r s e r g e n e r a t o r f o r c o n t e x t - f r e e grammars. I f t h e i n p u t grammar i s LL(1) , t h e o u t p u t i s t h e p a r s i n g t a b l e . I f n e c e s s a r y , t h e g e n e r a t o r w i l l p e r f o r m grammar modif i c a t i o n s s u c h a s e l i m i n a t i o n o f l e f t r e c u r s i o n a n d f a c t o r i n g . I f t h e t r a n s f o r m e d grammar i s n o t LL(1) y e t , t h e gen - e r a t o r w i l l p r o d u c e a l i s t i n g o f a l l e x i s t i n g c o n f l i c t s . I n c l u d - ed a r e examples a n d d e s c r i p t i o n o f u s e o f t h e g e n e r a t o r , w r i t - t e n i n E x t e n d e d A l g o l o f t h eNCE-UFRJ B6700
c o m p u t e r .capítula
I . INTRODUCAO...
1 C a p i t u l o I 1 . D E F I N I C O E S E C O N C E I T O S 3 FUNDAMENTAIS...
c a p i t u l o I11 . LINGUAGENS E G R A M T I C A S LL...
9 C a p i t u l o I V . D E S C R I C A 0 DO S I S T E M A...
26 I V . 1 . C O D I F I C A D O R...
2 8 I V.
2 . TESTADOR DA CONDICAO L L (1)...
33 I V.
2 . 1 . C o n j u n t o de s í m b o l o s i n i c i a d o r e s...
3 5 I V . 2 . 2 . C o n j u n t o de s í m b o l o s s e g u i d o r e s...
3 7 I V . 2 . 3 . C o n j u n t o de s í m b o l o s d i r e t o r e s...
3 9 I V.
3 . TRANSFORMACA0 DE G R A M T I C A S EM EQUIVALENTES L L ( 1 )...
4 0 I V . 3 . 1 . E l i m i n a g a o d e r e c u r s 5 02
e s q u e r d a...
4 1 . I V . 3 . 2 . F a t o r a g a o...
4 5capitulo
V . EXEMPLO E MODO DE U T I L I Z A C A O...
4 9...
Capítula
V I . CONCLUSOES 5 3B I B L I O G R A F I A
...
54...
I
-
INTRODUCAOE s t a t e s e d e s c r e v e um g e r a d o r de a n a l i s a d o r e s s i n t á t i -
c o s que u s a t é c n i c a s L L (1) p a r a c o n s t r u g a o d e a n a l i s a d o r e s "t op-down"
.
A s t é c n i c a s L L (1) foram a p r e s e n t a d a s p o r FOSTE& em3 1968 e receberam um t r a t a m e n t o t e Ó r i c o de KNUTH em 1971. Normalmente, a p r i m e i r a c o i s a a s e r e s p e c i f i c a d a no p r o j e t o de um compilador
é
o método de a n á l i s e s i n t á t i c a a s e r u t i l i z a d o . I s s o s e deve a o f a t o de que v i a de r e g r a , o a n a l i s a - dor s i n t á t i c o d i r i g e o c o m p i l a d o r , s o l i c i t a n d o " t o k e n s " a o ana-
l i s a d o r l é x i c o , e em linguagem p i t o r e s c a " s e r v i n d o de c a b i d e p a r a p e n d u r a r a s e m i n t i c a " , O f a t oé
que a a n á l i s e s i n t á t i c a6
uma d a s f a s e s de compilagáo mais u s a d a s e m e l h o r compreendidas e p a r a a qua 1 e x i s t e m t e o r i a s e s p e c í f i c a s bem c o n s t r u í d a s.
Por e s s a r a z h , r a r a m e n t e s e u t i l i z a m h o j e em d i a , p a r a o p r o j e t o de c o m p i l a d o r e s , t é c n i c a s manuais p a r a a cons -
t r u c a 0 do a n a l i s a d o r s i n t á t i c o , p r e f e r i n d o - s e em g e r a l t r a n s f e -
r i r p a r a um programa d e computador a c a r g a de d e s c o b r i r como a s d i v e r s a s c o n s t r u g o e s e s p e c í f i c a s d a g r a m á t i c a de uma l i n g u a -
gem de programagao podem s e r r e c o n h e c i d a s
.
Ao a n a l i s a d o r s i n t á t i c o a s s i m c o n s t r u í d o , (em g e r a l c o n s t i t u í d o p o r um programa-padriío e t a b e l a s e s p e c í f i c a s da g r a m á t i c a ) a c r e s c e n t a m o s a s chamadas do a n a l i s a d o r l é x i c o e d a s r o t i n a s s e m i n t i c a s , e o que mais s e t o r n e n e c e s s á r i o p a r a f o r m a r o c o m p i l a d o r . O t e x t o d e s t a t e s e f o i d i v i d i d o em c a p í t u l o s c u j o con -
tefido descrevemos a s e g u i r .
Neste p r i m e i r o c a p i t u l o fazemos uma pequena a p r e s e n t a -
~ $ 0 e a s e g u i r mostramos o que pode s e r e n c o n t r a d o nos o u t r o s c a p í t u l o s .
No c a p i t u l o I 1 i n t r o d u z i m o s d e f i n i g o e s b á s i c a s e n o t a -
s o e s que s e fazem n e c e s s á r i a s p a r a a compreensao do d e s e n v o l v i -
mento t e Ó r i c o do p r o c e s s o g e r a l de a n á l i s e s i n t á t i c a , e das l i n
-
guagens e g r a m á t i c a s LL a p r e s e n t a d a s no c a p i t u l o 111.O s i s t e m a r e s p o n s á v e l p e l a c o n s t r u s a o do g e r a d o r e s u a o r g a n i z a g a o g e r a l
s50
d e s c r i t o s no c a p i t u l o IV. P a r a melhor com -p r e e n s a o o c a p i t u l o f o i d i v i d i d o em módulos, onde cada mÓdulo
6
t r a t a d o em s e p a r a d o .No c a p i t u l o V mostramos por meio de uma ~ r a m á t i c a e s c 0 -
l h i d a como exemplo, como pode s e r u t i l i z a d o o s i s t e m a e o que e l e pode o f e r e c e r a o u s u á r i o .
A s c o n c l u s 6 e s e e x t e n s g e s p o s s í v e i s
s50
a p r e s e n t a d a s nocapitulo
VI.I 1
-
DEFINICUES E CONCEITOS FUNDAMENTAISE s t e c a p i t u l o p r o c u r a i n t r o d u z i r d e f i n i g o e s b á s i c a s da t e o r i a d e g r a m á t i c a s e l i n g u a g e n s de programagso bem como a l -
gumas n o t a g o e s a s s o c i a d a s com a t e o r i a matemática de l i n g u a g e n s f o r m a i s .
Alguns c o n c e i t o s e n o t a s o e s , t a i s como a l f a b e t o , s e -
quGncia d e s í m b o l o s , s e r s o c o n s i d e r a d o s como p r i m i t i v o s p a r a n o s s o s f i n s .
Um a l f a b e t o
é
normalmente d e n o t a d o por uma l e t r a g r e g a m a i ú s c u l a ; a s m a i s comuns s a o E, N, A ,r
.
D e f i n i s s o 1: O c o n j u n t o de t o d a s a s s e q u e n c i a s c o n s t r u í d a s com s í m b o l o s d e um a l f a b e t o q u a l q u e r C s e r ; d e n o t a d o p o r C * . A - s e q u g n c i a v a z i a E6
a s e q u e n c i a d e z e r o símbo - 10s. O c o n j u n t 0 d e t o d a s a s s e q u e n c i a s nao v a z i a s c o n s - t r u í d a s com s í m b o l o s de um a l f a b e t o q u a l q u e r C s e -+
r á
d e n o t a d o p o r C.
D e f i n i g a o 2 : O
-
comprimento 1x1 de uma s e q u g n c i ax
é
o número d e s í m b o l o s que compóem x .Por exemplo, s e j a C = {A,
...,
Z ) entrioBEG GIN^
= 5 . Se p o r o u t r o l a d o c o n s i d e r a r m o s C como s e n d o o a l -f a b e t o do ALGOL { b e g i n , e n d ,
- -
c a s e , . . . , A,...,
Z , O ,D e f i n i g a o 3 : Uma - linguagem s o b r e o a l f a b e t o C
6
um s u b c o n j u n t o de I * , i s t o6 ,
um c o n j u n t 0 d e s e q u e n c i a s de simbo - 10s d e C . A s l i n g u a g e n s podem s e r v a z i a s , nao v a z i a s , f i n i - t a s , i n f i n i t a s . S e j a C = {O, 1 ) . E n t a ocP
C*
C + { E1
{O, 1)+
(x
c CI
o Último s í m b o l o d e x6
1 ) s a o l i n g u a - gens s o b r e {O,11.
A d e f i n i g a o 3 i n t r o d u z um c o n c e i t o d e linguagem que po - de modelar l i n g u a g e n s n a t u r a i s ou l i n g u a g e n s a r t i f i c i a i s.
E n t r e e s t a s Ú l t i m a s s e s i t u a m a s l i n g u g e n s d e programagao. A e s c o l h a do a l f a b e t o a p r o p r i a d oé
f u n d a m e n t a l .Um dos d i s p o s i t i v o s usados p a r a e s p e c i f i c a r uma l i n g u a -
gem f i n i t a
6
a g r a m a t i c a . Vejamos a g o r a a d e f i n i s a 0 d e g r a m á t i - c a . D e f i n i s a 0 4 : Uma g r a m á t i c a6
uma q u á d r u p l a G =(N,C
, P , S ),
on - de: - Né
um
a l f a b e t o , c u j o s s r m b o l o s s a o o s-
n a o - t e r m i n a i s de G . ---
C6
um a l f a b e t o , c u j o s sfmbolos s 2 0 os t e r m i n a i s d e G .-
Nn
I =4
ou s e j a , N e C s20 a l f a b e t o s d i s t i n-
t o s .-
S6
um n a o - t e r m i n a l de G(S E N), o símbolo-
i n i c i a 1 de G .-
P6
um c o n j u n t 0 f i n i t o de producces ( r e g r a s ) da forma a -+B
onde a e Bs50
s e q u g n c i a s de s í m - b o l o s t e r m i n a i s e n á o - t e r m i n a i s , sendo o b r i g a t 6 - r i a a p r e s e n c a d e p e l o menos um n á o - t e r m i n a l em Convencao: Usaremos a s s e g u i n t e s n o t a g o e s p a r a r e p r e s e n t a r s í m - b o l o s e s e q u e n c i a s :-
l e t r a s m a i ú s c u l a s do comego do a l f a b e t o , t a i s como, A, B ,...
r e p r e s e n t a m s í m b o l o s n á o - t e r m i n a i s (N).
-
l e t r a s m i n ú s c u l a s do comeco do a l f a b e t o , t a i s como, a , b , ...
r e p r e s e n t a m slmbolos t e r m i n a i s ( I ) .-
l e t r a s maiÚsculas prÓximas do fim do a l f a b e t o , t a i s como, X , Y ,...
r e p r e s e n t a m símbolos da g r a m á t i c a , i s t o6 ,
t e r m i n a i s e / ou n a o - t e r m i n a i s (C U N).
-
l e t r a s minÚsculas prÓximas do f i m do a l f a b e t o , t a i s como, u , v ,. . .
, z , r e p r e s e n t a m s e q u e n c i a s de t e r m i n a i s ( I * ).
-
l e t r a s g r e g a s minÚsculas, t a i s como, a , B,u,...
r e p r e s e n t a m s e q u e n c i a s de símbolos da g r a m á t i c a , i s t o6 ,
s e q u g n c i a s de t e r m i n a i s e / o u n á o - t e r m i n a i s (C U N ) *.
A s s i m una produc50 ge -n é r i c a pode a p a r e c e r como A -+ a , i n d i c a n d o que há um n á o - t e r
-
uma s e q u g n c i a d e s í m b o l o s da g r a m á t i c a a
5
d i r e i t a d a s e t a (o l a d o d i r e i t o d a p r o d ~ s i í o ) .-
Se A + a l , A + a ~ , . . . , A i a ~ s a o t o d a s produqGes c o m A como l a d o e s q u e r d o , podemos e s c r e v e r A + a l l a 21
. .
.
1
a k e c h a - mar a l , a 2 , ..
.
, a k de - a l t e r n a t i v a s d e A .-
o l a d o e s q u e r d o da p r i m e i r a produgao6
sempre o s í m b o l o i n i - c i a l d a g r a m á t i c a .D e f i n i g a o 5 : S e j a G = ( N , Z , P , S ) . Dizemos que uma s e q u i n c i a y a 6
--
d e r i v a d i r e t a m e n t e em G a s e q u z n c i a yB
6 s e P contém a r e g r a a +B .
Em s í m b o l o s : y a 6 = > G y 6 6 Dizemos que a s e q u e n i c a a d e r i v a em G, em z e r o ou mais p a s s o s a s e q u z n c i aB
s e e x i s t e m um i n t e i r o n - > O e s e q u 6 n c i a s a o , a l , ..
, an t a i s q u e : a. = a =B
=> a p a r a i = 1 ,...,
n a i - l G i*
E m s í m b o l o s : a = > B GDizemos que uma s e q u g n i c a a d e r i v a em G
,
em um ou mais p a s s o s a s e q u g n c i a 13 s e a => B, sendo n > 1 -- G - na d e f i n i s 5 0 acima. Caso n a o s e j a n e c e s s á r i o e s p e c i f i c a r a g r a m á t i c a G,*
+
o s s í m b o l o s =>, => , => s e r 3 0 u s a d o s .Podemos a g o r a i n t r o d u z i r formalmente o c o n c e i t o de linguagem d e f i n i d a por urna g r a m á t i c a .
D e f i n i g a o 6 : S e j a G = ( N , C , P , S ) . A linguagem L(G) d e f i n i d a como :
DefinigZo 7 : Urna -- forma
--
s e n t e n c i a 1 de G = (N,I
,P ,S)é
urna s e-
*
quGncia a t a l que S => a . G Vamos agora i n t r o d u z i r a h i e r a r q u i a de g r a m á t i c a s e de l i n g u a g e n s , d e v i d a o r i g i n a l m e n t e a Chomsky. D e f i n i s 5 0 8 : Uma g r a m á t i c a G6 :
t i p 0 O s e simplesmente s a t i s f a z a d e f i n i g g o 4 . t i p o 1 ( s e n s í v e l ao c o n t e x t o ) s e t o d a s a s s u a s-
- -produqoes slao da forma a + B onde
1
al5
1
61
.
t i p 0 2 ( l i v r e
de
c o n t e x t o ) s e t o d a s a s s u a s p r o d u-
goes sZo d a forma A + B , ondeI B (
2 1
e A E N .t i p 0 3 ( r e g u l a r ) s e t o d a s a s s u a s p r o d u s o e s sZo da forma A -t aB ou A + a onde A e B E N e a e C .
D e f i n i c a 0 9 : Uma linguagem L
6
do t i p o i = 0 , 1 , 2 , 3 , s e e - x i s t e urna g r a m á t i c a G do mesmo t i p o i t a l queL = L ( G )
.
s e q u e n c i a v a z i a niio pode p e r t e n c e r a nenhuma linguagem t i p 0 1 ,
2 ou 3 . P a r a i n c l u i r a s e q u g n i c a v a z i a , a s d e f i n i g o e s de grams -
t i c a s t i p 0 1 , 2 e 3 s a o m o d i f i c a d a s n a forma a b a i x o :
-
p e r m i t i r e m o s em uma g r a m á t i c a t i p 0 1 ( s e n s í v e l a o c o n t e x t o ) uma produgao da forma S + E , onde S6
o s í m b o l oi n i c i a l , com a c o n d i g a o d e que S n a o a p a r e g a em nenhum l a d o d i -
r e i t o de p r o d u g a o .
-
l i b e r a r e m o s o u s o de r e g r a s d a forma A + E em grams - t i c a s l i v r e d e c o n t e x t o e r e g u l a r e s ( t i p o 2 e 3 ) . Das q u a t r o c l a s s e s de g r a m á t i c a s n a h i e r a r q u i a de Choms - k y , a s g r a m á t i c a s l i v r e de c o n t e x t o s 5 0 a s m a i s i m p o r t a n t e s em termos de a p l i c a g o e s de l i n g u a g e n s d e programagao. Uma g r a m á t i c a l i v r e de c o n t e x t o pode s e r u s a d a p a r a e s - p e c i f i c a r a m a i o r i a d a s e s t r u t u r a s s i n t á t i c a s de uma linguagem de programagao. Daqui p a r a f r e n t e , linguagem i n d i c a r ; l i n g u a -I11
-
- LINGUAGENS E GRAMTICAS L LAntes d e e n t r a r m o s em d e t a l h e n o e s t u d o do g e r a d o r de a n a l i s a d o r e s s i n t á t i c o s que
6
o o b j e t i v o p r i n c i p a l d e s t a t e s e , vamos a p r e s e n t a r a q u i a s nogóes f u n d a m e n t a i s p a r a a compreen - s a o do p r o c e s s o de a n á l i s e s i n t á t i c a .P o r a n á l i s e s i n t á t i c a , compreendemos o problema d e , (dadas uma g r a m á t i c a l i v r e d e c o n t e x t o G e uma s e q u e n c i a x de s u a linguagem) , d e t e r m i n a r como a s e q u h c i a x pode s e r d e r i v a -
d a a p a r t i r d o s í m b o l o i n i c i a l de G . Frequentemente c o n s i d e r a - s e também em a n á l i s e s i n t á t i c a , o problema d e m o s t r a r que uma d a d a s e q u e n c i a x nao p e r t e n c e
2
linguagem d a g r a m á t i c a G .Uma d i s t i n g a o f u n d a m e n t a l e x i s t e e n t r e o método d e a n á l i s e s i n t á t i c a L L ( l ) , que
6
um método top-down, e o u t r o smé
-t o d o s f r e q u e n t e m e n t e e n c o n t r a d o s , que s 5 0 métodos bottom-up. No método top-down, a a n á l i s e
6
f e i t a p r o c u r a n d o em c a d a p a s s o d e t e r m i n a r q u e produgao deve s e r usada a s e g u i r . Se a s e n t e n c a xé
examinada da e s q u e r d a p a r a a d i r e i t a , normalmen - t e o p r o c e s s o s e g u e uma d e r i v a g a o2
e s q u e r d a . Exemplo 1. Sejam a g r a m á t i c a G . E - t E + T 1 E + T 2 T + T * F 3 T - t F 4 F + ( E ) 5 F + a 6e a s e n t e n q a x = ( a + a )
*
a . A á r v o r e d e d e r i - v a c a 06
m o s t r a d a n a f i g u r a 111.1 e a s i m u l a q a o do p r o c e s s o d e a n á l i s e6
m o s t r a d o n o q u a d r o d a f i g u - r a 1 1 1 . 2 , onde p6
a s e q u 6 n c i a de números de p r o - duqoes u s a d a s na d e r i v a g a o e s q u e r d a . O s números e n c o n t r a d o s n a á r v o r e i n d i c a m a ordem em que a s e x p a n s o e s s a o r e a l i z a d a s d u r a n t e a a n á l i s e . F i g . 111.1No método bottom-up procuramos em c a d a p a s s o d e t e r m i
-
n a r que redugao d e v e s e r e f e t u a d a , p a r t i n d o d a s e n t e n s a x , e p r o c u r a n d o o b t e r o s í m b o l o i n i c i a l d e G . N e s t e c a s o , mantendo- s e o s e n t i d o de exame d a s e n t e n s a x d a e s q u e r d a p a r a a d i r e i-
t a , obteremos uma d e r i v a q h5
d i r e i t a c o n s t r u i d a em ordem i n -v e r s a .
A f i g u r a 111.3 m o s t r a na z r v o r e d e d e r i v a s i o da s e n
-
t e n s ax ,
do exemplo 1 , usando o método bottom-up, a ordem em que a s r e d u s o e s s % e f e t u a d a s .Vejamos, a g o r a , com d e t a l h e s , o que a c o n t e c e com a a n á l t s e top-down. Exemplo 2 : Consideremos a g r a m g t i c a a b a i x o q u e d e s c r e v e um b l o c o t i p o ALGOL. C - t c
1
c ; C (onde b , C, D, e c o r r e s p o n d e m a b e g i n , "comando", " d e c l a r a g Z o " ,--
e n d ) . Consideremos tarnhGm a s e n t e n s a : b d ; d ; c ; c e como e n t r a d a do a n a l i s a d o r.
A a n c < l i s e6
f e i t a comparando a s p o s s i b i l i d a d e s , ou f o r m a s s e n t e n c i a i s p o s s í v e i s , com a s e n t e n g a ou t e x t o f o n t e . A p r i m e i r a p o s s i b i i i d a d e o s i m b o i o i n i c i a l da g r a m á t i c a , e a s n o v a s p o s s i b i l i d a d e ss50
p r o d u z i d a s p o r s u b s t i t u i g 2 0 d o s simbo - 10s n a o - t e r m i n a i s m a i s2
e s q u e r d a p o r s u a s p o s s i v e i s expan- s o e s . A q u e l a s p o s s i . b i l i d a d e s que n a o correspond.em ao t e x t o sZo r e j e i t a d a s , d e i x a n d o a s o u t r a s p a r a comparagoes f u t u r a s , e a s-
sim ? o r d i . a n t e . O s e s t a d o s s u c e s s i v o s da a n s l i s e sZo dados n o q u a d r o da f i g w a 111: . 4 .Resumindo, a s r e g r a s d a a n á l i s e venos q u e :
-
o e s t a d o i n i c i a l . tern o s";mbolo i n i c i a l como forma s e n t e n . c i a 1 Única e o t e x t o f o n t e .- q u a l q u e r forma s e n t e n c i a 1 que comece com um s í m b o l o nau-
t e r m i n a l
ep
s u b s t i t u - I d a p o r t a n t a s q u a n t a s forem n e c e s s a r i a s , c a d a urna s e n d o a forma s e n t e n c i a l o r i g i n a l com o s í m b o l o nZo- t e r m i n a l s u b s t i t u í d o p o r -urna de s u a s e x p a n s o e s
.
-
s e t o d a s a s formas s e n t e n c i a i s p o s s s í v e i s comegam com um s í m-
bo10 t e r m i n a l , c a d a um d e s s e s s i m b o l o s
6
comparado com o s i m -bo10 m a i s
5
e s q u e r d a d o t e x t o . Se o s í m b o l o n5o p e r t e n c e a o t e x t o , a forma s e n t e n c i a 1 c o r r e s p o n d e n t e6
r e j e i ta d a , s e n s o o s í m b o l o6
r e t i r a d o d a mesma e p a s s a - s e p a r a o prÓximo e s t a-
d o , onde o t e x t o também p e r d e s e u p r i m e i r o c a r á t e r .-
a a n á l i s e t e r m i n a quando uma p o s s i b i l i d a d e e o t e x t o tornam- s e v a z i o s s i m u l t 2 n e a m e n t e . Se v á r i a s p o s s i b i l i d a d e s tornam- s e v a z i a s n e s t e p o n t o a linguagemé
ambí'gua, e s e nenhuma p o s s i b i l i d a d e t o r n a - s e v a z i a , o t e x t oSO
6
da linguagem. E s -t e tembém
6
o c a s o s e nenhuma p o s s i b i l i d a d e e x i s t e em algum moment o .-
r e c u r s 5 0 e s q u e r d a a c a r r e t a "loop" a o a n a l i s a d o r , uma vez que t o r n a - s e i m p o s s í v e l d e i x a r de o b t e r formas s e n t e n c i a i s comegando com um símbolo n 5 o - t e r m i n a l .POSSIBILIDADES
Consideremos o e s t a d o 4 da f i g u r a 1 1 1 . 4 . A a g a o d e t e r - m i n a n t e p a r a o e s t a d o 5 f o i o p r i m e i r o s í m b o l o d e c a d a uma d a s duas p o s s i b i l i d a d e s e o s í m b o l o do t e x t o . E s t a c o r r e s p o n d h c i a ,
no e n t a n t o , n a o
6
um p r o c e s s o i n s t a n t g n e o , uma vez que uma de -c l a r a c a o c o n s i s t e d e v á r i o s c a r a c t e r e s . A s duas p o s s i b i l i d a d e s permanecem d u r a n t e a a n á l i s e da d e c l a r a s 5 0 c o m p l e t a , que
6
por c o n s e g u i n t e a n a l i s a d a d u a s v e z e s . Cada comando6
também a n a l i s a -do d u a s v e z e s e e s t e número
6
dobrado c a d a vez que os comandos s a o r e f e r e n c i a d o s . E s t e d e s p e r d í c i o pode m u i t a s v e z e s s e r e l i m i - nado e s c o l h e n d o - s e uma p a m á t i c a d i f e r e n t e , p a r a a q u a ls6
e x i s - t e uma p o s s i b i l i d a d e por v e z . Exemplo 3 : S e j a a g r a m á t i c a a b a i x o : B - t b D ; C e D + d G G + E1
; D C + c H H - t EI
; C Se o a n a l i s a d o r f o r m a n t i d o , e l e t r a b a l h a r á com e s s a g r a m á t i c a d a s e g u i n t e m a n e i r a : P o s s i b i l i d a d e s T e x t o B b d ; d ; c ; c e b D ; C e b d ; d ; c ; c e e a s s i m p o r d i a n t e . A d e c l a r a q a o6
a n a l i s a d a somen-
t e uma v e z .E!
p o s s i v e l o b t e r uma g r a m á t i c a p a r a a q u a l o a n a l i s a -dor pode sempre r e d u z i r o número de formas s e n t e n c i a i s
passí
-
v e i s p a r a uma. I n f o r m a l m e n t e , s e o a n a l i s a d o r p u d e r tomar uma d e c i - s a o i n s p e c i o n a n d o somente um c a r a c t e r do t e x t o de e n t r a d a , o c a r a c t e r mais5
e s q u e r d a , dizemos q u e , a g r a m á t i c a e o a n a l i s a - d o r sZo LL(1). Se k c a r a c t e r e ss50
n e c e s s á r i o s p a r a o b t e r a d e - c i s a 0 a g r a m á t i c a e o a n a l i s a d o r s e r a o LL(k). O a n a l i s a d o r p a r a e s t e t i p 0 de g r a m á t i c a6
top-down e d e t e r m i n i s t i c o .E s t e s a n a l i s a d o r e s sZo chamados LL porque pesquisam a e n t r a d a da e s q u e r d a p a r a d i r e i t a ( L e f t - t o - r i g h t ) e constroem uma d e r i v a s a 0
5
e s q u e r d a (Leftmost).
Neste ponto passaremos a a p r e s e n t a r a s condigoes p a r a que uma g r a m á t i c a s e j a LL ( I ) , a n t e s porém d e f i n i r e m o s a l g u n s c o n c e i t o s .
Consideremos a s s e g u i n t e s pordug5es p a r a um n a o - t e r m i -
n a l A .
D e f i n i ~ a o 1: O c o n j u n t 0 de símbolos que podem o c o r r e r
5
e s - q u e r d a de q u a l q u e r s e q u e n c i a g e r a d a p o r uma s e - q u e n c i a nZo v a z i a a de t e r m i n a i s e n a o - t e r m i -n a i s
6
chamada de "simbolos--
i n i c i a d o r e s " d e a eé
d e f i n i d o como:D e f i n i c a 0 2 : O c o n j u n t o de s í m b o l o s que podem o c o r r e r i m e d i a - t a m e n t e
5
d i r e i t a deum
n Z o - t e r m i n a l A em alguma forma s e n t e n c i a 1é
chamado d e "símbolos-
s e g u i d o r e s " d e A . Se Aé
o s l m b o l o mais d i r e i t a em uma forma s e n t e n c i a l e n t a o $ (um s i m b o l o novo)é
i n c l u i d o no c o n j u n t o de s I m b o l o s s e g u i d o r e s de A . ( $ r e p r e s e n t a n a p r a t i c a um i n d i c a d o r de f i m de a r q u i v o ) S (A) = { a ~ C u { $ )
I
X$ =>* B A a 6 , B e (CUN)", 6 E. (C U N U ( $ 1 ) " , A eN)
D e f i n i q a o 3 : O c o n j u n t 0 de s í m b o l o s d i r e t o r e s p a r a uma expan - sZo a d e um n a o - t e r m i n a l Aé
d e f i n i d o como: A c o n d i g a o n e c e s s á r i a e s u f i c i e n t e p a r a urna g r a m á t i c a s e r LL(1)6
q u e os s í m b o l o s d i r e t o r e s c o r r e s p o n d e n t e s a d i f e - r e n t e s expansoes d e c a d a nZo t e r m i n a l e s t e j a m em c o n j u n t o s d i s - j u n t o s . A j u s t i f i c a t i v a d e s t a c o n d i c 5 06
a s e g u i n t e :-
a c o n d i ~ a o6
n e c e s s á r i a porque s e um s l m b o l o a p a r e c e em d o i s c o n j u n t o s d e s í m b o l o s d i r e t o r e s o a n a l i s a d o r nZo pode d e c i -d i r que expansao a p l i c a r sem informaqao f u t u r a .
-
a c o n d i q a oé
s u f i c i e n t e , p o r q u e o a n a l i s a d o r pode sempre e s -c o l h e r uma e x p a n s á o em fungao do s í m b o l o dado e e s t a
é
sem -j u n t o s de símbolos d i r e t o r e s , o t e x t o nao
é
da linguagem e há um e r r o .A n a l i s a d o r L L (1)
Uma g r a m á t i c a LL(1) p e r m i t e o uso de formas e s p e c i a i s de a n a l i s a d o r e s . Uma d e s s e s
6
o método de d e s c i d a r e c u r s i v a , , n o ---
q u a l c a d a n a o - t e r m i n a l c o r r e s p o n d e a um p r o c e d i m e n t ~ d o a n a l i - s a d o r s i n t á t i c o . Exemplo 4 : C o n s i d e r e a g r a m á t i c a LL(1) B - t b d ; X c Y e X - t d ; X I & Y + ; c Y ( E Um a n a l i s a d o r p a r a e s t a g r a m á t i c a s e r i a :p r o c e d u r e B ; b e g i n check ( ' b ' ) ; check ( ' d ' ) ; check ( ' ; ' ) ;
x
; check ( ' c ' ) ; c h e c k ( ' e ' ) ; end ; -- p r o c e d u r e X ; b e g i n - i f c a r a c t e r = ' d ' t h e n b e g i n check ( ' d ' ) ;- -
check ( ' ; ' ) ;X
end ; - end ;-
p r o c e d u r e Y ; b e g i n i f c a r a c t e r =' ; '
--
t h e n b e g i n check ( ' ; ' ) ; check ( ' c ' ) ; end ;-
e n d ; --onde check
é
uma macro que confirma s e o c a r a c t e r c o r r e n t e ( oA
c a r a c t e r mais
5
e s q u e r d a do t e x t o f o n t e )é
o mesmo que o p a r a - m e t r o a t u a l e d e s l o c a um c a r a c t e r do t e x t o f o n t e . Se o c a r a c -t e r c o r r e n t e n s o
6
c o n f i r m a d o , o a n a l i s a d o r a c u s a um e r r o . Uma o u t r a e s t r u t u r a p o s s í v e l p a r a o a n a l i s a d o r LL (1)6
um programa p a d r a o , que tem a c e s s o a uma t a b e l a , onde ficam r e u n i d a s a s informagoes s o b r e a g r a m á t i c a . N e s t e c a s o , uma a l - t e r a c s o na g r a m á t i c a c o r r e s p o n d e apenas a uma a l t e r a c s o nos dados c o n s t a n t e s da t a b e l a . Normalmente e s t e t i p 0 de a n a l i s a -d o r
6
chamado d i r i g i d o p e l a t a b e l a ( t a b l e - d r i v e n p a r s e r ) . O a n a l i s a d o r p r e d i t i v o d e s c r i t 0 a s e g u i r6
d e s t e t i p o , d e s s a f o r--- -
ma, a n e c e s s i d a d e de uma linguagem que p e r m i t a chamadas r e c u r -
s i v a s de procedimentos
é
a f a s t a d a . O a n a l i s a d o r p r e d i t i v o mantém uma p i l h a , (e6
p o r e s - t e motivo que s e d i s p e n s a a r e c u r s i v i d a d e ) e s u a e s t r u t u r a b á s i-
c a e s t ; na f i g u r a 111.5.I
a + b...
$(
+- E n t r a d a P i l h a F i g . 1 1 1 . 5A e n t r a d a contém a c a d e i a p a r a s e r a n a l i s a d a , s e g u i d a d e $ , a marca d e f i m . A p i l h a contém uma s e q u s n c i a d e s í m b o l o s d a g r a m á t i c a , p r e c e d i d a de $ , a marca d e f i n a l d a p i l h a . I n i c i -
a l m e n t e , a p i l h a contém o s í m b o l o i n i c i a l d a g r a m á t i c a p r e c e d i
-
do d e $ . A t a b e l a de a n á l i s e , d e f i n i d a como:TIA,^^
= j s e e somente s e j : A + a e SD(A,a) = a ,6
uma m a t r i z , onde A6
um n a o - t e r m i n a l e - a
6
wn t e r m i n a l ou o s í m b o l o $ . O a n a l i s a d o ré
c o n t r o l a d o p e l a s a s s e s que seguem. O programa d e t e r m i n a X , o s í m b o l o no t o p o d a p i l h a , e - a , o símbo-
c o r r e n t e da e n t r a d a . E s t e s d o i s s í m b o l o s determinam a a s s o a n a l i s a d o r . E x i s t e m t r s s p o s s i b i l i d a d e s : Se X = a = $ , o a n a l i s a d o r p a r a i n d i c a n d o a c o n c l u s a o da a n á l i s e com s u c e s s o . Se X = a#
$ , o a n a l i s a d o r r e t i r a X da p i l h a e a v a n s a o p o n t e i r o d a e n t r a d a p a r a o prÓximo s í m b o l o d a e n t r a d a . SeX
6
um n a o - t e r m i n a l A, o programa c o n s u l t a a e n t r a d aTIA,^^
da t a b e l a . E s t a e n t r a d a s e r ; uma produgiío do nao- t e r m i n a l A d a g r a m á t i c a , (na p r á t i c a , o número d a produgiío) ou uma e n t r a d a d e e r r o . Se TI
~ ,1
a= (A + a ) , o a n a l i s a - d o r s u b s t i t u i A no t o p o da p i l h a p o r a.
SeTIA,^^
= e r r o , i s t oé,
e n t r a d a em b r a n c o , o a n a l i s a d o r chama urna r o t i n a de r e c u p e r a g a o d e e r r o . Exemplo 5 : C o n s i d e r e a p - a m á t i c a LL(1) do exemplo 4 . A t a b e - l a d e a n á l i s e p a r a e s t a g r a m á t i c a e n c o n t r a - s e n a f i g u r a 1 1 1 . 6 . Brancos s a o e n t r a d a s de e r r o . (A ma -n e i r a como e s t a s e n t r a d a s sZo s e l e c i o n a d a s s e r ; m o s t r a d a no ~ r Ó x i m o c a p i t u l o ) . Com a e n t r a d a d o exemplo 2 o a n a l i s a d o r f a r 5 a s e q u g n c i a d e movi - mentos mos t r a d a na f i g u r a I1 I . 7
.
F i g . 1 1 1 . 6 B P a r a algumas g r a m á t i c a s a t a b e l a T p o s s u i e n t r a d a s que sZo d e f i n i d a s m u l t i p l a m e n t e . Poe e x e m p l o , s e a g r a m á t i c a6
r e c u r s i v as
e s q u e r d a ou ambígua, e n t Z o a t a b e l a t e r á p e l o me -nos uma e n t r a d a com d e f i n i s 5 0 m ú l t i p l a .
Se a g r a m á t i c a náo f o r LL, SD(A,a) í l S D ( A , a t )
#
6
e p o r t a n t oT I A ,
a l~ Z O
pode s e r d e f i n i d o i n e q u i v o c a m e n t e p a r a t o d o s o s a ' s . b B+bd; XcYe dP+&
/
X+d;X X+E 7 cF i g . 1 1 1 . 7 Exemplo 6 : S e j a a g r a m á t i c a d e f i n i d a p o r : S A ~ D A B + b d ; X c Y e X + d ; X 0 X + E Y + ; C Y Y + E
I
PILHA - - $ B $ e Y c X ; d b $ e Y c X ; d $ e Y c X ; $ e Y c X $ e Y c X ; d $ e Y c X ; $ e Y c X $ e Y c $ e Y $ e Y c ; $ e Y c $ e Y $ e $ A t a b e l a d e s í m b o l o s d i r e t o r e s p a r a e s t a g r a m á t i - ENTRADA b d ; d ; c ; c e $ b d ; d ; c ; c e $ d ; d ; c ; c e $ ; d ; c ; c e $ d ; c ; c e $ d ; c ; c e $ ; c ; c e $ c ; c e $ c ; c e $ ; c e $ ; c e $ c e $ e $ e $I
$ c aé
m o s t r a d a na f i g u r a 1 1 1 . 8 . Nela a e n t r a d a p a r aI
S ' , e ( contém t a n t o S ' + e S como S + E .F i g . 1 1 1 . 8
A g r a m á t i c a d o exemplo 6
6
ambigua e a ambiguidadeé
m a n i f e s t a d a n a e s c o l h a de que p r o d u ~ i i o u s a r quando um - e ( e l s e ) a p a r e c e . E s t a ambiguidade pode s e r r e s o l v i d a s e escolhermos S ' + e s , o que c o r r e s p o n d e a a s s o c i a r m o s o e l s e a o Último i f .
Podemos a s s i m informalmente d i z e r que urna g r a m á t i c a LL(1) p o s s u i wna t a b e l a de a n á l i s e que n a o p o s s u i e n t r a d a s m Ú 1 -
IV
-
D E S C R I ~ O DO SISTEMA N e s t e c a p i t u l o d e s c r e v e r e m o s o g e r a d o r d e a n a l i s a d o r e s s i n t á t i c o s LL(1) , c u j a implementagao f o i o o b j e t i v o de n o s s a t e - s e , o s a l g o r i t m o s e o s métodos u t i l i z a d o s p a r a a l c a n s a r e s t e f i m . O s i s t e m a6
v o l t a d o p a r a o u s o do computador Burroughs B 6 7 0 0 e a l i n g u a g e m d e p r o g r a m a ~ a o u s a d a6
o ALGOL.Fizemos u s o d e e s t r u t u r a d e dados com m a n i p u l a ~ a o p a y c i a 1 de p a l a v r a s , p r o c u r a n d o sempre que p o s s í v e l u s a r o s 48 b i t s a c e s s í v e i s . O s i s t e m a , a p r i n c í p i o , f u n c i o n a em b a t c h , s e n d o s i m - p l e s a s u a a d a p t a q i í o p a r a o n - l i n e . SZo f o r n e c i d o s a o u s u á r i o trGs mÓdulos d i s t i n t o s : - um c o d i f i c a d o r c u j a f u n q a o
6
f o r n e c e r g r a m á t i c a uma r e p r e - s e n t a s s o i n t e r n a ,-
um t e s t a d o r d a c o n d i q a o L L ( l ) ,-
um módulo que t e n t a t r a n s f o r m a r g r a m á t i c a s n5o LL(1) em g r a - m á t i c a s e q u i v a l e n t e s L L (1) , a l é m d e algumas r o t i n a s a u x i l i a r e s de i m p r e s s a o de r e s u l t a d o s i n t e r m e d i á r i o s d e c a d a um dos mÓdulos a c i m a , e o g e r a d o r p r o p r i a m e n t e d i t 0.
A o r g a n i z a c Z o g e r a l do s i s t e m aé
m o s t r a d a no f l u x o g r a - ma d a f i g u r a I V . l .GRAMATICA
i-r
COD IFICADORu
S FACA FATORACAO2
F i g . I V . 1 Obs. : N e s t e f l u x o g r a m a n a o mostramos a s s a í d a s a n o r m a i s d o s i s t e m a .I V . l
-
CODIFICADOR N e s t e mÓdulo, a g r a m á t i c a c u j a r e p r e s e n t a g á o s e encon - t r a n o f o r m a t o de e n t r a d a , s o f r e uma a n á l i s e l é x i c a e s i n t á t i - c a , r e c e b e uma r e p r e s e n t a g á o i n t e r n a e6
g e r a d a a t a b e l a de s í m b o l o s p a r a o s n a o - t e r m i n a i s e t e r m i n a i s , . A ; r e a d e memória esti'mada p a r a a g r a m á t i c a p a d r a o - a p r e s e n t a o s e g u i n t e " d e f a u l t " : 2 0 0 n a o - t e r m i n a i s 500 t e r m i n a i s comprimento médio do l a d o d i r e i t o d a p r o d u ~ a o = 5 produgZo média p o r n 5 o - t e r m i n a l = 4 Exemplo: S e j a a g r a m á t i c a :1 EXPRESSAO = EXPRESSAO
'
+ ' TERMO2
I
TERMO ;3 TERMO = TERMO I * ' FATOR
4
1
FATOR 5 3 6 FATOR = ( EXPRESSA0 I ) 7I
' A ' ; Sua r e p r e s e n t a ~ a o i n t e r n a6
m o s t r a d a n a f i g u r a IV.2. P a r a c a d a n Z o - t e r m i n a l da g r a m á t i c aé
a s s o c i a d o uma p a l a v r a n a e s t r u t u r a s e q u e n c i a l PONT, que a p o n t a p a r a a p r i m e i - r a p r o d u ~ i i o d e s s e n Z o - t e r m i n a l .A e s t r u t u r a l i g a d a NO
6
formada p o r t r e s campos: o p r i -m e i r o ocupa o s b i t s 4 7
5
3 2 , o segundo o s b i t s 3 12
1 6 e o t e r -c e i r o o s b i t s 1 5 0 .
Quando um NO
é
u s a d o p a r a r e p r e s e n t a r o l a d o e s q u e r d o de uma p r o d u g a o o p r i m e i r o campo a p o n t a p a r a a produc20 s e g u i n -t e d o mesmo n Z o - t e r m i n a l , o s e g u n d o campo contém o número do c a r t a 0 onde e s s a produgao
6
i n i c i a d a , e o t e r c e i r o campo a p o n t a p a r a a r e p r e s e n t a g g o do l a d o d i r e i t o da p r o d u g a o .Na r e p r e s e n t a c s o do l a d o d i r e i t o da produg2o o p r i m e i -
r o campo nao
6
u t i l i z a d o , o segundo campo contém o c ó d i g o do s í m b o l o t e r m i n a l ou n a o - t e r m i n a l , e o t e r c e i r o campo a p o n t a p a r a a r e p r e s e n t a c a o do prÓximo s i m b o l o .A e s c o l h a de uma e s t r u t u r a l i g a d a
6
d e c o r r e n t e da n e -c e s s i d a d e d e m o d i f i c a g o e s n a s p r o d u ~ o e s dos n a o - t e r m i n a i s
j á
- ex i s t e n t e s , t a i s como r e t i r a d a ou i n c l u s a o de s í m b o l o s o u mesmo de p r o d u g o e s , bem como c r i a g a o d e novos n a o - t e r m i n a i s .
El-
FORMAT0 DE ENTRADA
Representamos urna g r a m á t i c a l i v r e de c o n t e x t o na s e
-
g u i n t e forma:GLC
=ESPAGO
I
GLC REGRA ESPAGO
;REGRA
=PARTE*ESQUERDA
'
= '
ALTERNATIVAS
'
;'
#
g l c v a z i a 7ALTERNATIVAS
=PARTE*DIREITA
I
ALTERNATIVAS
'
I
'
PARTE*DIREITA
;PARTE*ESQUERDA
=NAO*TERMINAL
7PARTE*DIREITA
=ESPAGO
#
lado d i r e i t o sequencia vaziaI
PARTE
"DIREITA TERMINAL ESPACO
I
PARTE*DIREITA NAO*TERMINAL ESPACO
;NAO*TERMINAL
=IDENTIFICADOR
TERMINAL
=CADEIA
7IDENTIFICADOR
=LETRA
I
IDENTIFICADOR LETRA
I
IDENTIFICADOR DIGITO
I
IDENTIFICADOR ESTRELINHA
;CADEIA
=PLICA QUALQUER*COISA PLICA
ESPACO
=SEPARADOR
SEPARADOR
=BRANCO
I
MUDALINHA
I
COMENTARIO
;COMENTARIO
=JOGO*DA*VELHA BRANCO QUALQUER*COISA MUDALINHA
#
una p a r t e d i r e i t a vaziaI
QUALQUER*
COISA CARACTER
I
QUAL(JJER*COI
SA
JOGO*DAXVELHA 'N
'
#
mudalinha1
QUALQUER*COISA JOGO*DA*VELHA
'
Q'
#
urna p l i c aI
QUALQUER*COISA JOCO*DA*VELNI JOGO*DA*VELHA
#
jogo da velha7
CARACTER
=LETRA
I
DIGITO
I
OPERADOR
I
BRANCO
;LETRA
='A'
I
'B'
[
...
I
' Z ' 7DIGITO
= ' 0 'I
'1'I
...
1
'9' ;OPERADOR
= ' ='
I
q t
I
I ; '1
I + 'I
1 - 1I
I * II
r p
I
I < I I 1 , 'I
I 'I
1,'
1
1 . 1I
1 . 1 71 1 ( ' 1 ' ) '
YPLICA
='#Q'
#
conven@o para o uso da p l i c aY
JOGO DA VELHA
=' # # '
#
convengao para o uso do jodo da velha3
MUDALINHA
='#NI
7BRANCO
= ' ' 7ESTRELINHA
=' * '
I V . 2
-
TESTADOR DA C O N D I C A O L L (1)E s t e mÓdulo tem p o r o b j e t i v o t e s t a r a condigao LL(1) p a r a uma dada g r a m á t i c a . E l e
6
formado p e l o s g e r a d o r e s d e :-
s I m b o l o s i n i c i a d o r e s-
s i m b o l o s s e g u i d o r e s-
s í m b o l o s d i r e t o r e sO a l g o r i t m o que d e c i d e s e uma g r a m á t i c a G
6
ou nao LL(1) d e t e r m i n a o c o n j u n t 0 d e s í m b o l o s d i r e t o r e s p a r a cada ex-
p a n s 5 0 d e um n a o - t e r m i n a l e em s e g u i d a a p l i c a a condigZo LL(1).P a r a d e t e r m i n a r o s c o n j u n t o s d e s i m b o l o s d i r e t o r e s , p r i m e i r o encontramos o s c o n j u n t o s de s h b o l o s i n i c i a d o r e s e s e g u i d o r e s p a r a cada n á o - t e r m i n a l , como também a informagao de que o n á o - t e r m i n a l g e r a ou n5o a sequGncia v a z i a .
Algoritmo que d e t e r m i n a s e um n 5 o - t e r m i n a l pode ou nao g e r a r a s e q u e n c i a v a z i a - r o t i n a SEQUl?NCIAVAZIA, p á g i n a A8 do a p s n d i c e .
E s t e a l g o r i t m o n e c e s s i t a de uma cÓpia da g r a m á t i c a e um v e t o r V, com uma e n t r a d a p o r n 5 o - t e r m i n a l na g r a m á t i c a . O s
e l e m e n t o s de V possuem um dos t r e s v a l o r e s :
- -
s i m , nao ou i n d e f i n i d o , d i z e n d o s e o n a o - t e r m i n a l pode ou n a o g e r a r a s e q u e n c i a v a z i a . O a l g o r i t m o f u n c i o n a d a s e g u i n t e m a n e i r a : 1-
c a d a e l e m e n t o de V6
i n i c i a l i z a d o com " i n d e f i n i d o " 2-
d u r a n t e um p a s s o na g r a m á t i c as50
e x e c u t a d a 5 a s s e g u i n t e s a ~ 6 e s :a )
-
s e q u a l q u e r expansao d e um n á o - t e r m i n a l6
a sequGncia v a z i a , o c o r r e s p o n d e n t e e l e m e n t o de V r e c e b e o v a l o r " s i m " e t o d a s a s produqoes do n a o - t e r m i n a l s a o e l i m i - nadas d a g r a m á t i c a . b )-
q u a l q u e r p r o d u ~ a o contendo um simbolo t e r m i n a l6
e l i - minada da g r a m á t i c a . Se e s s a a s s o e l i m i n a t o d a s a s produsoes d e um n a o - t e r m i n a l , o v a l o r c o r r e s p o n d e n t e de V r e c e b e o v a l o r "n20". 3-
a g r a m á t i c a e s t ; a g o r a l i m i t a d a p e l a r e g r a na q u a l os l a -dos d i r e i t o contém somente símbolos n a o - t e r m i n a i s . Com s u -
c e s s i v o s p a s s o s na g r a m á t i c a obtemos a s s e g u i n t e s a s c e s , onde cada l a d o d i r e i t o
6
examinado:a )
-
s e a e n t r a d a c o r r e s p o n d e n t e de V tem o v a l o r "sirn", o símbolo6
e l i m i n a d o . Se i s s o l e v a s e q u g n c i a v a z i aa
como l a d o d i r e i t o , o n a o - t e r m i n a l p a r a o q u a l e s t á e uma expansao, pode g e r a r a s e q u e n c i a v a z i a . A c o r r e s
-
pondente e n t r a d a de V t o r n a - s e " s i m " e a s produqoes do n á o - t e r m i n a l s a o e l iminadas. b )-
s e a c o r r e s p o n d e n t e e n t r a d a d e V tem o v a l o r "nao", a p r o d u ~ a o6
e l i m i n a d a . Se t o d a s a s produsoes do niio- . t e r m i n a l s a o e l i m i n a d a s d e s s a m a n e i r a , sua e n t r a d a em V r e c e b e o v a l o r "nao". 4-
s e d u r a n t e um p a s s o completo n a g r a m á t i c a , nenhuma e n t r a d a de V6
t r o c a d a e há a i n d a e n t r a d a s i n d e f i n i d a s a g r a m á t i c a nao6
LL(1) e i s t o provoca uma t e r m i n a s a 0 anormal do a l g o-
r i t m o .
4
A t e r m i n a s a o anormal do a l g o r i t m o a c i m a , e uma raziío s u f i c i e n t e p a r a d i z e r que a g r a m á t i c a niio
é
L L ( 1 ) , p o r q u e n e s - s e c a s o , e x i s t e r e c u r s i í o5
e s q u e r d a e n i í o - t e r m i n a i s i n ü t e i s , uma vez que e x i s t e um c e r t o número d e produqoes c o n s i s t i n d o s o - mente de n a o - t e r m i n a i s n 5 o - v a z i o s o s q u a i snZo
podem gerarsequen-
c i a s que nií0 contenham n a o - t e r m i n a i s
.
P a r a q u a l q u e r g r a m á t i c a que nií0 contém n a o - t e r m i n a i s i n Ú t e i s somos c a p a z e s d e p r o d u z i r o v e t o r V, i n d i c a n d o s e um n i í o - t e r m i n a l pode ou nií0 g e r a r a s e q u e n c i a v a z i a .
O ~ r ó x i m o p a s s o a g o r a
6
o c á l c u l o dos c o n j u n t o s de s í m b o l o s i n i c i a d o r e s .IV. 2 . 1
-
CONJUNTOS DE S ~ M B O L O S INICIADORESO c o n j u n t 0 i n i c i a d o r d e c a d a n a o - t e r m i n a l
6
c a l c u l a d o em uma m a t r i z de b i t s composta de d o i s campos, m o s t r a d o s na f i -g u r a IV. 3 .
D u r a n t e um p a s s o da g r a m á t i c a o s s í m b o l o s i n i c i a d o r e s i m e d i a t o s s 2 0 i n d i c a d o s n a m a t r i z . Ve jamos como i s s o a c o n t e c e : Por exemplo, na r e g r a : A + B c D
1
e (B, A) e ( e , A) recebem o v a l o r 1 Se B pode g e r a r a s e q u e n c i a v a z i a ( i n f o r m a g a o encon-
t r a d a em V) , cé
também um i n i c i a d o r de A, e ( c ,A) r e c e b e o va - l o r 1 , e a s s i m p o r d i a n t e . A m a t r i z de s í m b o l o s i n i c i a d o r e s i m e d i a t o s n á o6
s u f i -ciente como pode s e r o b s e r v a d o no exemplo s e g u i n t e . Consideremos a s p r o d u g o e s : A + B c D B - t b X b
6
um i n i c i a d o r d e B e p o r s u a v e z um i n i c i a d o r d e A. O f e c h a m e n t e t r a n s i t i v o , GRIES", da m a t r i z de i n i c i a - d o r e s i m e d i a t o s f o r n e c e a m a t r i z c o m p l e t a de s í m b o l o s i n i c i a - d o r e s n e c e s s á r i a p a r a c a l c u l a r o s s i m b o l o s d i r e t o r e s . A m a t r i z de s í m b o l o s i n i c i a d o r e s , r e s u l t a n t e do f e c h a - mento t r a n s i t i v o , p e r m i t e um t e s t e i m e d i a t o de r e c u r s a o2
e s - q u e r d a , v i s t o q u e um 1 em s u a d i a g o n a l p r i n c i p a l i n d i c a que um n a o - t e r m i n a lé
um i n i c i a d o r d e s i mesmo. A r o t i n a q u e d e t e r m i n a o c o n j u n t 0 d e s i m b o l o s i n i c i a - d o r e s p a r a c a d a n á o - t e r m i n a l e n c o n t r a - s e na página Al6 doapgndice.Náo e n t r a r e m o s em d e t a l h e s s o b r e o s a l g o r i t m o s de f e -
chamento t r a n s i t i v o . Um dos a l g o r i t m o s e f i c i e n t e
6
o d e s c r i t 0 p o r W A R S H A L L ~ . O a l g o r i t m o que usamos6
p a r a um c a s o p a r t i c u -l a r , uma v e z que a m a t r i z
6
e s p a r s a e a m e t a d e do l a d o e s q u e r - do d a m a t r i z ( a p a r t i r d a d i a g o n a l p r i n c i p a l ) n5o6
n e c e s s á r i a , p o r q u e o s t e s t e s n e c e s s i t a m s o m e n t e d o s t e r m i n a i s que s a o s í m - 11 b o l o s i n i c i a d o r e s d e c a d a n g o - t e r m i n a l , GRIFFITHS.
A r o t i n a que c a l c u l a o f e c h a m e n t o t r a n s i t i v o de uma m a t r i z de b i t s e n c o n t r a - s e na p á g i n a A16 do a p G n d i c e .I V . 2 . 2
-
CONJUNTOS DESTMBOLOS
SEGUIDORESO c o n j u n t 0 s e g u i d o r e s d e c a d a n 5 o - t e r m i n a l
é
também acumulado em uma m a t r i z de b i t s . A m a t r i z de s í m b o l o s s e g u i d o - r e sé
p r o d u z i d a d u r a n t e um p a s s o n a g r a m á t i c a . E s t a m a t r i z n e - c e s s i t a d e t r e s campos como m o s t r a r e m o s a s e g u i r . P o r e x e m p l o , n a r e g r a : A - t B C D I E f a s d e d u g ó e s i m e d i a t a s s a o :-
C6
s e g u i d o r de B-
s e C pode g e r a r a s e q u g n c i a v a z i a , D6
s e g u i d o r de B-
D6
s e g u i d o r d e C-
f6
s e g u i d o r d e E S u r g e e n t r e t a n t o , um p r o b l e m a . Consideremos uma p r o d u - g5o c o n t e n d o A . Z6
s e g u i d o r d e A . Mas s e s u b s t i t u ~ m o s A p o r BCD, o b t e m o s : X + Y B C D Ze Z
6
também s e g u i d o r d e D . A s s i m , o f a t o que Dé
o Ü l t i m o s í m-
bo10 d e A n e c e s s i t a s e r i n d i c a d o , uma vez que t o d o s o s s e g u i d o -r e s d e A sZo s e g u i d o r e s d e D (e s e D pode g e r a r a sequGncia v a -
z i a , o mesmo
6
v e r d a d e p a r a C , e a s s i m p o r d i a n t e ) . A m a t r i z d e s í m b o l o s s e g u i d o r e s tem a f o r m a m o s t r a d a n a f i g u r a I V . 4 . F i g . IV.4 a No p r i m e i r o campo (X,Y) = 1 i n d i c a q u e X e s e g u i d o r d e Y .No segundo campo (X,Y) = 1 i n d i c a que os s e g u i d o r e s d e X sZo s e g u i d o r e s d e Y, i s t o
6 ,
que Y6
o Ú l t i m o membro d e uma p r o d u g a o d e X .No t e r c e i r o campo (x,Y) = 1 i n d i c a q u e x
6
s e g u i d o r d e Y .No p r i m e i r o campo, X
6
s e g u i d o r de Y, s i g n i f i c a q u e t o d o s os i n i c i a d o r e s d eX
sZo s e g u i d o r e s de Y e e s t e s i n i c i a -d o r e s sZo e n c o n t r a d o s n a m a t r i z de i n i c i a d o r e s . Uma v e z que e s -
tamos i n t e r e s s a d o s s o m e n t e em i n i c i a d o r e s e s e g u i d o r e s t e r m i -
n a i s podemos a d i c i o n a r a c o r r e s p o n d e n t e l i n h a da m a t r i z de i n i -
c i a d o r e s a o t e r c e i r o campo da m a t r i z d e s e g u i d o r e s p a r a c a d a
E f e t u a n d o o f e c h a m e n t o t r a n s i t i v o n o s segundo e t e r c e i r o campos da m a t r i z obtemos a m a t r i z c o m p l e t a de s í m b o l o s s e g u i d o r e s . As r o t i n a s u s a d a s p a r a a d e t e r m i n a q a o do c o n j u n t o dos s í m b o l o s s e g u i d o r e s d e c a d a n a o - t e r m i n a l e n c o n t r a m - s e n a pág& na A17 do a p e n d i c e .
I V . 2 . 3
-
CONJUNTOS DE STMBOLOS DIRETORESDepois d e o b t i d a s a s m a t r i z e s de s í m b o l o s i n i c i a d o r e s e s e g u i d o r e s , t o r n a - s e p o s s í v e l o c á l c u l o d a s f u n q o e s I e S , d e f i n i d a s no c a p i t u l o a n t e r i o r , e a s s i m p e r m i t i r o c á l c u l o dos s í m b o l o s d i r e t o r e s e pos t e r i o r m e n t e a a p l i c a q a o da condiqiío L L ( 1 ) . O a l g o r i t m o que s e g u e , f o i u s a d o p a r a d e t e r m i n a r O c o n j u n t o de s i m b o l o s d i r e t o r e s d e c a d a n a o - t e r m i n a l . A i d é i a b á s i c a do a l g o r i t m o
6
s i m p l e s : P a r a c a d a p r o d u q a o A -+ a , da g r a m á t i c a , s a o e x e c u t a d a s a s s e - g u i n t e s a q o e s : a ) p a r a c a d a t e r m i n a l a em I ( a ) i n t r o d u z a A + a em TIA,al b) s e A g e r a a s e q u e n c i a v a z i a i n t r o d u z a A + E emTIA,^^
p a r a c a d a t e r m i n a l b em S (A).
A r o t i n a que determina o s c o n j u n t o s de s ~ m b o l o s d i r e t o - r e s e a que a p l i c a a condigiío a c o n d i q a o LL(1) e n c o n t r a m - s e na p a g i n a A 2 2 do a p e n d i c e .O s c o n j u n t o s de símbolos d i r e t o r e s siío n e c e s s á r i o s n a g e r a ~ 5 o do a n a l i s a d o r s i n t á t i c o , uma vez que e l e s formam o c r i -
t é r i o de d e c i s s o . Se a c o n d i ~ a o f o r n e c e um r e s u l t a d o p o s i t i v o , o a n a l i s a d o r pode s e r g e r a d o d i r e t a m e n t e , sen50 a g r a m á t i c a ne -
c e s s i t a de modificaqGes a n t e s d e s e r a c e i t a .
IV. 3
-
TRANSFORMACA0 DE GRAMTICAS EM EQUIVALENTES L L (1)Neste mÓdulo descreveremos a s h e u r I s t i c a s u s a d a s na t e n t a t i v a d e r e e s c r e v e r , uma g r a m á t i c a G n5o L L ( l ) , em uma n o -
va forma, de modo que a nova gramát i c a G ' s e j a L L (1)
.
E s t e p r o -c e s s o no e n t a n t o nao pode s e r i n t e i r a m e n t e a u t o m á t i c o .
Mais formalmente, i s t o pode s e r v i s t o como um p r o b l e - ma de d e c i d i b i l i d a d e . Enquanto
é
d e c i d í v e l d i z e r s e uma gramá-t i c a
é
ou niio LL (1) ,6
i n d e c i d I v e 1 d i z e r s e a linguagem de-
s trita p o r uma g r a m á t i c a l i v r e de c o n t e x t o a r b i t r á r i a ,é
ou nao una linguagem LL(1) e d e s t a forma nZo6
p o s s í v e l e s c r e v e r um a l g o r i t m o de t r a n s f r o m a g 5 0 que f u n c i o n e em t o d o s os c a s o s .Por e s s a r a z 5 0 , n5o s e pode g a r a n t i r que o programa t r a n s f ormará uma gramát i c a dada em uma e q u i v a l e n t e L L (1) mesmo que e s t a g r a m á t i c a e x i s t a . No e n t a n t o , esperamos que a s h e u r i s -
t i c a s a p r e s e n t a d a s cubram uma l a r g a f a i x a d a s g r a m á t i c a s encon -
t r a d a s na p r á t i c a .
A s p r i n c i p a i s t é c n i c a s u s a d a s p a r a t r a n s f o r m a 5 5 0 de uma g r a m á t i c a s a o :
-
e l i m i n a ~ a o de r e c u r s s o5
e s q u e r d a-
f a t o r a s 5 0 e s u b s t i t u i q 5 0I V . 3.1 ELIMINACA0
-
DE RECURSAOA
ESQUERDAUma d a s d i f i c u l d a d e s que e n c o n t r a m o s a o t r a t a r com
mé
-t o d o s d e a n á l i s e top-down
6
a r e c u r s á o5
e s q u e r d a . Uma g r a m á t i c a6
r e c u r s i v a5
e s q u e r d a s e p o s s u ium
n a o - t e r m i n a l A t a l q u e : p a r a algum a.
O problema de e l i m i n a g a o d e r e c u r s 5 05
e s q u e r d a6
r e - 5 4s o l v i d o t e o r i c a m e n t e em GREIBACH e o a l g o r i t m o que usamos e de F O S T E R ~
.
E s t e a l g o r i t m o u t i l i z a t é c n i c a s de r e p r e s e n t a g á o normalmente a s s o c i a d o s5
á l g e b r a d e e x p r e s s o e s r e g u l a r e s . Consideremos um c o n j u n t 0 d e n 5 o - t e r m i n a i s mutuamente r e c u r s i v o s5
e s q u e r d a : H = {X1, X2,...
X n l
E
p o s s í v e l e s c r e v e r os membros de H da s e g u i n t e forma: X i + X 1B l i
I
...
I
X jB j i
I
...
I
X n B n iI
a i a i ,B j i
E: ( C U N ) * Sem p e r d a de g e n e r a l i d a d e , podemos r e e s c r e v e r a i e ' j i como n a o - t e r m i n a i s , i s t o6 ,
a c r e s c e n t a n d o a s s e g u i n t e s r e g r a s5
g r a m á t i c a :O c o n j u n t 0 de r e g r a s p o d e , a i n d a , s e r r e e s c r i t o u s a n - do o s o p e r a d o r e s d e m u l t i p l i c a g i i o e a d i g a o : Xi = X1 B l i + X 2 B 2 i +
. ..
+ 'n B n i + A~ e s t a s e q u a g o e s f ormam a equagao m a t r i c i a l : O u s o d e s s e s o p e r a d o r e s pode s e r j u s t i f i c a d o d a s e - g u i n t e f o r m a :-
m u l t i p l icagiio ( c o n c a t e n a ~ a o )6
associativa e a s e q u g n c i a vaz i aE s e r v e como e l e m e n t o i d e n t i d a d e .
- a d i g a o ( a l t e r n a ~ a o )
6
a s s o c i a t i v a e c o m u t a t i v a com @ como e l e m e n t o i d e n t i d a d e .A m a t r i z i d e n t i d a d e
6 :
A s o l u q Z o mínima da e q u a c a o m a t r i c i a l X = X B + A
6 :
X = A B * onde : B* = I + B + B 2 +...
f a z e n d o Z = B* e B* = I + B B * , obtemos: onde Z6
a m a t r i z d e novos n a o - t e r m i n a i s : Vamos i l u s t r a r e s t e método d e e l i m i n a c a a d e r e c u r s a o L a e s q u e r d a com o exemplo a s e g u i r . Consideremos a s p r o d u c o e s : A - t A c1
B d l e B - t A f1
B g1
honde o s n a o - t e r m i n a i s A e B sa"o mutuamente r e c u r s i v o s . A s s i m : X = (A B)
E s t e método d e e l i m i n a q á o d e r e c u r s 5 0 tem a vantagem d e n 5 o i n t r o d u z i r novos c o n f l i t o s n a c o n d i q a o L L ( 1 ) . Como o método
6
g e r a l , em c e r t o s c a s o s a e l i m i n a g a o p r o d u z um g r a n d e número d e n o v a s p r o d u q o e s f i c a n d o a c r i t é r i o do u s u á r i o do s i s t e m a us;-10 ou e s c r e v e r s u a s g r a m á t i c a s sem r e c u r s a os
e s q u e r d a . A l g o r i t m o u s a d o p a r a e l i m i n a q g o d e r e c u r s a o5
e s q u e r - da : t u a m e n t e recursives.
.
1. C r i e a s p r o d u q o e s Z i i -+ E p a r a i = 1 ,