• Nenhum resultado encontrado

Publicações do PESC Um Gerador de Tabelas de Análise Sintática para Gramáticas de Tipo SLR (L), LALR (L) e LR (L)

N/A
N/A
Protected

Academic year: 2021

Share "Publicações do PESC Um Gerador de Tabelas de Análise Sintática para Gramáticas de Tipo SLR (L), LALR (L) e LR (L)"

Copied!
255
0
0

Texto

(1)

UM GERADOR DE TABELAS DE

ANALISE

S I N T ~ T I C A PARA

RAUL VICENTE TARDIN COSTA

TESE SUBMETIDA AO CORPO DOCENTE DA COOR- DENACÃO DOS PROGRAMAS DE PÓS-GRADuAcÃo DE ENGENHARIA DA UNIVERSIDADE FEDERAL DO R I O DE J A N E I R O COMO PARTE DOS R E Q U I S I T O S

NECESSARIOS

PARA A OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIAS (M.Sc.)

A p r o v a d a p o r :

V

P r e s i d e n t e ,

,

R I O DE J A N E I R O , R J - B R A S I L MARÇO DE 1 9 8 1

(2)

-- - -

COSTA, RAUL V . TARDIN

Um Gerador de Tabelas de ~ n á l i s e ~ i n t á t i c a p a r a ~ r a m á t i c a s SLR(1) , LALR(1) e LR(1) (Rio de J a n e i r o 1981). V I I I , 24Bp. 29,7cm (COPPE-UFRJ , M.Sc. S i s t e m a s , 1 9 8 1 ) . Tese- Univ.Fed.Rio de J a n e i r o . Fac. Engenharia 1. T a b e l a s de a n á l i s e s i n t á t i c a p a r a Gramáticas SLR(1) , LALR(1) e LR(1)

.

I . COPPE/ U F R J . I1 . ~ í t u l o ( s é r i e )

(3)

AGRADECIMENTOS

A JOSÉ LUCAS RANGEL p e l a o r i e n t a ç ã o d e t o d o o t r a b a l h o , sem a q u a l s e r i a i m p o s s ~ v e l r e a l i z á - l o .

A JAYME LUIZ SCWARCFITER e EBER ASSIS SCHMITZ, p e l a p a r t i c i pação na banca examinadora.

(4)

E s t e t r a b a l h o implementa um g e r a d o r de t a b e l a s p a r a a n á l i s e s i n t á t i c a de g r a m á t i c a s SLR(1) , LALR(1) e LR(1). A e n t r a d a

6

a g r a m á t i c a c o d i f i c a d a na n o t a ç ã o BNF "Backus Naur Form".

O g e r a d o r f o i programado em linguagem ALGOL e implementado no computador Burroughs B6700 no ~ Ú c l e o de Computação ~ l e t r ô n i - c a da U n i v e r s i d a d e F e d e r a l do Rio de J a n e i r o .

São a p r e s e n t a d o s : i n t r o d u ç ã o t e ó r i c a , a l g o r í t m o s , c a r a c t e - r í s t i c a s de implementação , documentação do programa, forma de u t i l i z a ç ã o com uma s é r i e de exemplos e c o n c l u s õ e s f i n a i s .

(5)

ABSTRACT

T h i s work implements a p a r s e r t a b l e g e n e r a t o r f o r gramars SLR(1:) , LALR(1) and LR(1)

.

The i n p u t i s t h e grammar coded i n BNF (Backus Naur Form) no

-

t a t i o n .

The g e n e r a t o r was programmed i n ALGOL l a n g u a g e and was implg mented on t h e Burroughs B6700 Computer o f t h e Nucleo de Computa

-

ção ~ l e t r ô n i c a (Computing C e n t e r 3 o f t h e U n i v e r s i d a d e F e d e r a l do Rio de J a n e i r o ( F e d e r a l U n i v e r s i t y of Rio de J a n e i r o ) .

The f o l l o w i n g sub j e c t s a r e p r e s e n t e d : i n t r o d u c t i o n , t h e o r e - t i c a l f o u n d a t i o n s , a l g o r i t h m s , i m p l e m e n t a t i o n c h a r a c t e r i s t i c s ,

program d o c u m e n t a t i o n , u t i l i z a t i o n form w i t h a s e r i e s o f examples and f i n a l c o n c l u s i o n s

.

(6)

I

.

INTRODUÇÃO 1

.

Escopo

...

...

2

.

Revisão da L i t e r a t u r a I 1

.

FUNDAMENTOS TEÓRICOS

...

.

1 Convenções 2

.

Gramática l i v r e de c o n t e x t o

...

...

.

3 ~ n á l i s e ~ i n t á t i c a

...

4

.

Métodos mais comuns de a n á l i s e s i n t á t i c a

4.1. Métodos "bottom-up"

...

4.2. Métodos "top-down"

...

5

.

Comparação e n t r e c l a s s e s de g r a m á t i c a s mais co . n h e c i d a s

...

6

.

Comparação e n t r e c l a s s e s de l i n g u a g e n s mais co . n h e c i d a s

...

...

.

7 A n á l i s e s i n t á t i c a L R

...

7 . 1 - Gramática aumentada

...

7 . 2 - ~ r a m á t i c a LR(k)

...

7.3- Ana35sador s i n t á t i c o LR 7 . 4 - Construção das t a b e l a s de a n á l i s e s i n t á t i c a

...

SLR(1) 7.5- Construção das t a b e l a s de a n á l i s e s i n t á t i c a

...

LR(1) 7 . 6 - Construção das t a b e l a s de a n á l i s e s i n t á t i c a

(7)

I I I

.

IMPLEMENTAÇÃO 1

.

Escolha da linguagem

...

2

.

Descrição g e r a l do gerador

...

3

.

Representação das e s t r u t u r a s i m p o r t a n t e s u t i l i z a . das

...

...

4

.

Limitações f í s i c a s i m p o r t a n t e s 5

.

Tamanho das á r e a s u t i l i z a d a s

...

6

.

Operações r e a l i z a d a s p o r r o t i n a

...

7

.

U t i l i z a ç ã o de macros

...

8

.

Resultados complementares FIRST e FOLLOW

...

1

.

Conversor da g r a m á t i c a de e n t r a d a p a r a r e p r e s e n - t a ç ã o i n t e r n a n a memória

...

1.1. Descrição

...

1 . 2 . Descrição do a n a l i s a d o r l é x i c o

...

1 . 3 - Descrição da a n á l i s e s i n t á t i c a . recuperação de e r r o e geração de c6digo

...

1 . 4 . Fluxo

...

2

.

Rotinas de c á l c u l o da r e l a ç ã o FIRST

...

3

.

Rotinas de c á l c u l o da r e l a ç ã o FOLLOW

...

4

.

Rotinas de uso g e r a l

...

5

.

Rotinas de c á l c u l o das t a b e l a s SLR(1) e LALR(1)

.

6

.

Rotinas de C á l c u l o das t a b e l a s LR(1)

...

(8)

V. U T I L I Z A Ç Ã O VI. 1. D e s c r i ç ã o de a r q u i v o s

...

1.1- E n t r a d a s

...

1 . 2 - S a í d a s

...

2 . Mensagens de e r r o e a ç õ e s p a r a e r r o s de í n d i c e i n v á l i d o

...

3. Exemplos de u t i l i z a ç ã o do g e r a d o r p a r a c r i a ç ã o de t a b e l a s S L R ( l ) , LALR(1) e LR(1)

...

.

... .

...

...

4 . Exemplos de u t i l i z a ç ã o d a s t a b e l a s de a n á l i s e CONCLUSÕES 1. A n á l i s e do desempenho

...

2 . S u g e s t õ e s p a r a e x t e n s ã o do t r a b a l h o

.

.

. . .

. .

. .

.

3 . Observações f i n a i s

...

ANEXOS I . L i s t a g e m do programa f o n t e

...

11. Exemplos de u t i l i z a ç ã o e r e l a t ó r i o s do g e r a d o r . 1 1 1 . ~ e 1 a t ó r i o s do g e r a d o r p a r a a g r a m á t i c a do con

-

v e r s o r

...

I V . ~ r a m á t i c a s u t i l i z a d a s n a a n á l i s e do desempenho. B i b l i o g r a f i a

...

(9)

1. Escopo

O a n a l i s a d o r s i n t á t i c o de t i p o LR é uma e x c e l e n t e opção n a e s c o l h a de a n a l i s a d o r s i n t á t i c o p a r a uma g r a m á t i c a de uma dada linguagem p o r uma s é r i e de r a z õ e s : o A d e t e ç ã o de e r r o s o c o r r e com m a i o r a n t e c i p a ç ã o p o s s í v e l em um p e r c u r s o da e s q u e r d a p a r a a d i r e i t a de uma s e n t e n - ç a de e n t r a d a . A t a b e l a do a n a l i s a d o r s i n t á t i c o contém as s í m b o l o s que s e r i a m c o n t i n u a ç õ e s v á l i d a s , f a c i l i t a n d o a s mensagens e r e c u p e r a ç ã o de e r r o .

o O método de a n á l i s e s i n t á t i c a L R é mais g e r a l que o méto

-

do de o p e r a d o r e s de p r e c e d ê n c i a e o u t r a s t é c n i c a s " s h i f t - r e d u c e W . O método LR também domina a s formas mais co -

muns de a n á l i s e s i n t á t i c a "top-down" sem "back t r a c k " (AHO U L L M A N ~ ) .

o E s t u d o s mostraram que o s a n a l i s a d o r e s s i n t á t i c o s LR po

-

dem s e r c o n s t r u í d o s t ã o e f i c i e n t e m e n t e q u a n t o q u a l q u e r o u t r a t é c n i c a de g e n e r a l i d a d e comparável , t a n t o em e s p a

-

ço como em tempo. Comparando a s demandas de o u t r o s p r o

-

c e s s o s d e n t r o de uma c o m p i l a ç ã o , o s r e q u e r i m e n t o s dos a - n a l i s a d o r e s s i n t á t i c o s L R s ã o r e l a t i v a m e n t e modestos

(HORNING')

.

Porém o que normalmente r e c e b e um p e s o r a z o a v e l m e n t e a l t o em uma e s c o l h a de a n a l i s a d o r s i n t á t i c o , é a e x i s t ê n c i a de g e r a - d o r c a p a z de montar a s t a b e l a s d e s t e , e v i t a n d o a s s i m a t a r e f a c a n s a t i v a e demorada de montagem manual.

O o b j e t i v o d e s t a t e s e é t o r n a r d i s p o n í v e l um g e r a d o r d a s t a

-

b e l a s de a n á l i s e s i n t ã t i c a p a r a g r a m á t i c a s do t i p o LR, e l i m i n a n

-

do a s s i m uma desvantagem da e s c o l h a de um a n a l i s a d o r s i n t á t i c o L R . A f i g u r a a s e g u i r m o s t r a o e s b o ç o g e r a l do g e r a d o r de t a b e - l a s .

(10)

Gramática

,

Tabel9s do a n a l i s a d o r T a b e l a s s i n t á t i c o

Geração de Tabelas

E s t e t r a b a l h o e uma s é r i e de o u t r o s foram s u g e r i d o s p e l o grupo de p r o f e s s o r e s da Area de Compiladores, e n t r e o s q u a i s o o r i e n t a d o r d e s t a t e s e , de forma a montar e s t r u t u r a capaz de d a r s u p o r t e a t r a n s f e r ê n c i a de "know-fiow" na c o n s t r u ç ã o de compiladores n a c i o n a i s , deixando p a r a o c o n s t r u t o r apenas t a r e

-

f a s que dependam da i n t e r f a c e com a máquina em que o compila- dor e s t á sendo implementado. Um exemplo t í p i c o d e s t a s t a r e f a s

é a geração de código normalmente no Assembler da máquina.

2 . Revisão da L i t e r a t u r a

A a n á l i s e s i n t á t i c a LR f o i i n i c i a l m e n t e d e s c r i t a ( K N U T H ~ )

.

As t é c n i c a s de a n á l i s e s i n t á t i c a L R não vinham sendo u t i l i

-

zadas com a i n t e n s i d a d e de o u t r o s métodos t e o r i c a m e n t e menos a t r a t i v o s . As a p r e s e n t a ç õ e s o r i g i n a i s do método eram de d i f i

-

c i l compreensão e a s implementações a p a r t i r do método o r i g i

-

n a 1 de KNUTH eram muito i n e f i c i e n t e s .

Uma s é r i e de o t i m i z a ç õ e s e a p r e s e n t a ç õ e s mais c l a r a s foram d e s c o b e r t a s (AHO U L L M A N ~ ) (MO U L L M A N ~ ) ( A N D E R S O N ~ ) (DE R E M E R ~ ) ( J O L I A T ~ ) ( P A G E R ~ ' ) ( H O R N I N G ~ )

.

No i n í c i o do t r a b a l h o d e s t a Tese tomou-se conhecimento do l i v r o (AHO U L E M ~ N ? ~ ~ ~ ~ e x p l i c a de forma b a s t a n t e c l a r a o a l g o - r i t m o padrão de a n á l i s e s i n t á t i c a L R , o s a l g o r í t m o s de t a b e l a s de a n á l i s e s i n t á t i c a SLR(1) , LALR(1) e LR(1). E s t a r e f e r ê n c i a passou a s e r a p r i n c i p a l da implementação n e s t a t e s e r e a l i z a d a .

(11)

E s t e cap?tulo r e v ê rapidamente c o n c e i t o s e d e f i n i ç õ e s neces- s á r i o s p a r a u t i l i z a ç ã o do p r o d u t o d e s t a Tese. P a r a maior d e t a l h a

-

1 2

mento deve-se r e c o r r e r a b i b l i o g r a f i a (AHO

ULLMAN

)

(HORNING

)

(GRIES~)

(AHO ULLMANI) (AHO ULLMAN~)

.

A

maior p a r t e d e s t e c a p í t u l o segue a s r e f e r ê n c i a s

(AHO ULL-

4

MAN')

(AHO ULLMAN

)

(AHO

ULLMAN')

.

A

n o t a ç ã o u t i l i z a d a

6

b a s e a

-

1

(12)

Convenções

1.1- Símbolos usualmente não t e r m i n a i s :

-

nomes c u j a p r i m e i r a l e t r a é m a í s c u l a t a i s como Ex- p r e s s ã o , Termo ;

-

l e t r a s m a ~ s c u l a s ;

- a l e t r a S quando a p a r e c e é normalmente o símbolo i

-

n i c i a l ;

-

nopes e n t r e os c a r a c t e r e s < e > t a i s como < e x p r e s

-

sã^>, < E x p r e s s ã o > , < E > , e t c . 1 . 2 - Símbolo usualmente t e r m i n a i s :

-

l e t r a minúscula p e r t o do i n í c i o do a l f a b e t o a , b , c , . . . . ;

-

o p e r a d o r e s t a i s como + , - ,

/

, e t c ;

-

c a r a c t e r e s de pontuação t a i s como p a r ê n t e s i s , v í r - g u l a , p o n t o , e t c

...;

-

d í g i t o s ou c a d e i a de d í g i t o s t a i s como 0 , 1 0 , 2,245 \ e t c . .

. ;

-

nomes minÚsculos t a i s como i d e n t i f i c a d o r , c o n s t a n

-

t e , e t c . . . . 1 . 3 - L e t r a s minÚsculas p e r t o do fim do a l f a b e t o p r i n c i p a l

-

mente u , v ,

...,

z , r e p r e s e n t a m c a d e i a s de t e r m i n a i s . 1 . 4 - L e t r a s Gregas t a i s como a , @ , y r e p r e s e n t a m c a d e i a s de símbolos da g r a m á t i c a . 1 . 5 - O l a d o e s q u e r d o da p r i m e i r a produção de uma g r a m á t i c a é normalmente o símbolo i n i c i a l . 1.6- L e t r a s m a i ú s c u l a s próximas ao fim do a l f a b e t o , p r i n c i - palmente X , Y , Z , 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 o é , t e r m i n a i s ou não t e r m i n a i s .

(13)

2 . ~ r a m á t i c a l i v r e de c o n t e x t o

P a r a a e s p e c i f i c a ç ã o de uma linguagem de programação u t i l i

-

z a ~ s e - normalmente de uma d e f i n i ç ã o i n i c i a l de uma g r a m á t i

-

c a l i v r e de c o n t e x t o d e s c r i t a n a forma c o n h e c i d a como B N F "Ba

-

ckus-Naur Form"

.

Uma g r a m á t i c a l i v r e de c o n t e x t o é a g r a m á t i c a G=(N,C,P,S ) onde a s p r o d u ç õ e s de P s ã o da forma : A : : = a onde A E N e ae(NUC)* e C

-

c o n j u n t o de s í m b o l o s t e r m i n a i s N

-

c o n j u n t o de s í m b o l o s não t e r m i n a i s S

-

s í m b o l o i n i c i a l A linguagem d e s t a g r a m á t i c a é o c o n j u n t o de c a d e i a s t e r m i n a i s que podem s e r g e r a d o s a p a r t i r de S de C * . A s v a n t a g e n s de s e u t i l i z a r de uma g r a m á t i c a l i v r e de con

-

t e x t o p a r a d e f i n i r s i n t a t i c a m e n t e uma linguagem de programação a e s t a a s s o c i a d a s ã o a s s e g u i n t e s :

- A g r a m á t i c a f o r n e c e uma forma f á c i l de e n t e n d i m e n t o da e s p e c i f i c a ç ã o s i n t á t i c a dos programas d e s t a l i n - guagem de programação.

Podem s e r c o n s t r u i d o s a n a l i s a d o r e s s i n t á t i c o s a u t o - m á t i c o s p a r a uma g r a m á t i c a bem d e s e n h a d a , que no c a - s o d e s t a t e s e s ã o o s de t i p o S L R ( l ) , LALR(1) e LR(1). P o r t a n t o um r e q u i s i t o de u t i l i z a ç ã o d e s t a t e s e

6

a d e s c r i ç ã o da l i n g u a g e m 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 na n o t a ç ã o B N F . A g r a m á t i c a c r i a uma e s t r u t u r a p a r a m e t o d i z a ç ã o da g e r a ç ã o de c ó d i g o e d e t e c ç ã o de e r r o s .

(14)

A n a l i s a r s i n t a t i c a m e n t e uma s e n t e n ç a de uma linguagem de uma c e r t a g r a m á t i c a c o n s i s t e em v e r i f i c a r s e e s t a s e n t e n ç a p e r

-

tente a e s t a linguagem ( c a s o em que é p o s s í v e l o b t e r a á r v o r e s i n t á t i c a d a s d e r i v a ç õ e s r e a l i z a d a s p a r a p r o d u z í - l a ) ou desco- b r e - s e a e x i s t ê n c i a de e r r o que i n d i c a que a s e n t e n ç a não p e r - t e n c e a linguagem. 0 s métodos modernos de a n á l i s e s i n t á t i c a e s -

t ã o montados normalmente em t a b e l a s a s q u a i s podem s e r anexa- dos f a c i l m e n t e p r o c e d i m e n t o s de g e r a ç ã o de c ó d i g o e r e c u p e r a

-

ç ã o de e r r o .

4 . Métodos mais comuns de a n á l i s e s i n t á t i c a

Existem d o i s t i p o s b á s i c o s de a n a l i s a d o r s i n t á t i c o ; o "top-down" que c o n s t r o i a á r v o r e s i n t á t i c a a p a r t i r i30 t o p o

( r a i z ) e t r a b a l h a a t é a p a r t e de b a i x o ( f o l h a s ) , e o "bottom

-

up" que t r a b a l h a n a forma i n v e r s a . Nos d o i s c a s o s a a n á l i s e s i n -

t á t i c a c o n s i d e r a d a é a que p e r c o r r e a s e n t e n ç a a r e c o n h e c e r da e s q u e r d a p a r a a d i r e i t a que é como e s t a m o s acostumados a l e r .

4 . 1 - Métodos "bottom-up" :

0 s métodos "bottom-up" mais c o n h e c i d o s u t i l i z a m t é c - n i c a c o n h e c i d a como " s h i f t - r e d u c e " que c o n s i s t e e m p i l h a r s í m b o l o s r e c o n h e c i d o s n a s e n t e n ç a de e n t r a d a a t é a p a r e c e r o l a d o d i r e i t o de alguma produção no topo da p i l h a , e e s - t e l a d o d i r e i t o é e n t ã o r e d u z i d o p a r a o não t e r m i n a l do l a d o e s q u e r d o da p r o d u ç ã o . O p r o c e s s o c o n t i n u a da mesma ma

-

n e i r a a t é o empilhamento do Último s í m b o l o e r e d u ç õ e s a t é a produção que contém o símbolo i n i c i a l da g r a m á t i c a .

D e f i n i ç õ e s :

S e j a G ( S ) uma g r a m á t i c a e y = aPw uma forma s e n t e n c i a 1 a d i r e i t a , chama-se " h a n d l e " de y à p r o d u ç ã o A+

B e a p o s i ç ã o de y onde

6

pode s e r e n c o n t r a d o e s u b s t i - t u í d o p o r A , de forma a p r o d u z i r a forma s e n t e n c i a l a d i

-

(15)

r e i t a imediatamente a n t e r i o r em uma d e r i v a ç ã o mais a d i r e i t a de y

.

I s t o é , s e S aAw md + aBw en-

t ã o A + 6 n a p o s i ç ã o s e g u i n t e a a é um "handle" de

a8w

.

Ex: S e j a a g r a m á t i c a

e a s "formas s e n t e n c i a i s = abbcde = aAbcde

A -t b n a p o s i ç ã o 2 é o "handle" de y

e A +Ab n a p o s i ç ã o 2 é o "handle" de a

P a r a uma g r a m á t i c a não ambígua t o d a forma s e n t e n c i a 1 a d i r e i t a tem somente um "handle".

O 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 método " s h i f t - r e

-

duce" pode s e r e n t e n d i d o como uma s u c e s s ã o de p a s s o s de i d e n t i f i c a ç ã o e redução de " h a n d l e s " .

O a n a l i s a d o r s i n t á t i c o de " s h i f t - r e d u c e " pode s e r i m

-

plementado com u t i l i z a ç ã o de uma p i l h a , uma á r e a com a s e n

-

t e n ç a de e n t r a d a e o c a r a c t e r $ u t i l i z a d o p a r a i n d i c a r a b a s e de p i l h a e o f i n a l da s e n t e n ç a de e n t r a d a . O a n a l i s a - d o r s i n t á t i c o pode r e a l i z a r a s s e g u i n t e s o p e r a ç õ e s :

empilha

-

o próximo símbolo da s e n t e n ç a de e n t r a d a é co- l o c a d o no topo da p i l h a .

reduz- o a n a l i s a d o r reconhece que o símbolo mais a d i -

r e i t a de um "handle" e s t á no t o p o da p i l h a , e s

-

t e deve e n t ã o d e s c o b r i r o símbolo mais a e s

-

(16)

q u e r d a do "handle" e também a que símbolo não t e r m i n a l r e d u z i r o "handle" c o n s i d e r a d o . a c e i t a - o a n a l i s a d o r reconhece o f i n a l com s u c e s s o da a n á l i s e s i n t á t i c a . e r r o - o a n a l i s a d o r d e s c o b r e um e r r o e p a s s a o c o n t r o - e à r o t i n a de r e c u p e r a ç ã o de e r r o . O a n a l i s a d o r começa na s i t u a ç ã o P i l h a E n t r a d a $ w$ onde w-sentença de e n t r a d a a p a r t i r r e a l i z a o p e r a ç õ e s de empilha e a c e i t a a t é encon

-

t r a r um e r r o ou a t é e n c o n t r a r a s i t u a ç ã o P i l h a E n t r a d a que c o r r e s p o n d e a operação a c e i t a . Ex:- S e j a a g r a m á t i c a do exemplo a n t e r i o r e a s e n t e n c a abbcde, s ã o m o s t r a d a s a b a i x o ; a s operações r e a l i

-

z a d a s , p i l h a e a á r e a de e n t r a d a . P i l h a E n t r a d a abbcde bbcde bcde bcde c de cde de e Ação e m p i l h a empilha reduz p o r A -t b e m p i l h a reduz p o r A +Ab e m p i l h a e m p i l h a reduz p o r B -+ d e m p i l h a reduz p o r Iç +aAcBe

(17)

A s d i f e r e n ç a s e n t r e o s d i v e r s o s métodos de a n á l i s e s i n - t á t i c a e s t ã o n a forma em que e s t e s descobrem um " h a n d l e " e como conseguem r e d u z i - l o ao não t e r m i n a l e s q u e r d o da r e s

-

p e c t i v a p r o d u ç ã o . Um método p a r a g r a m á t i c a s de p r e c e d ê n c i a , e s t a v a e n t r e a s p r i m e i r a s t é c n i c a s u t i l i z a d a s p a r a a n á l i s e s i n t á t i c a de l i n g u a g e n s de programação, e e x i s t e um bom nÚ

-

mero de v a r i a ç õ e s do método que s e b a s e i a n a d e f i n i ç ã o de r e l a ç ã o de p r e c e d ê n c i a * > e n t r e s í m b o l o s da gr-amática t a l q u e , p e r c o r r e n d o a forma s e n t e n c i a 1 aPw onde

'B

6

o. "hhdleV a r e l a ç ã o * > e x i s t e e n t r e o Último s í m b o l o de 6 e o p r i m e i r o s í m b o l o de w . E s t a r e l a ç ã o i n d i c a uma d e c i s ã o de r e d u ç ã o ,

s e a r e l a ç ã o * > não s e a p l i c a uma o p e r a ç ã o e m p i ~ l h a deve & s e r chamada. A l o c a l i z a ç ã o do l a d o d i r e i t o do " h a n d l e " e d e t e r m i n a d o p e l a r e l a ç ã o o > , e a d e t e r m i n a ç ã o do l a d o e s

-

q u e r d o e que produção r e d u z i r depende do t i p o de p r e c e d ê n - c i a u t i l i z a d a . O s metodos de p r e c e d ê n c i a mais c o n h e c i d o s s ã o :

-

p r e c e d ê n c i a s i m p l e s

-

P r e c e d ê n c i a e s t e n d i d a

-

P r e c e d ê n c i a f r a c a

-

p r e c e d ê n c i a de e s t r a t e g i a m i s t a

-

P r e c e d ê n c i a de o p e r a d o r e s o u t r o s métodos de a n á l i s e s i n t á t i c a "bottom-up" :

-

BRC ("Bounded R i g h t Context")

-

Floyd-Evans - LR O método LR s e r á d e t a l h a d o a d i a n t e , p a r a d e t a l h e s do mé

-

4

t o d o BRC e Floyd-Evans v e r (AHO IJLLMAN ) .

4 . 2 - Métodos "top-down"

E x i s t e m d o i s métodos mais c o n h e c i d o s de a n á l i s e s i n t á

-

t i c a "top-down" ,

(18)

4 . 2 . 1 - Método d a s d e s c i d a s r e c u r s i v a s

E s t e método monta a á r v o r e sem n e c e s s i d a - de de v o l t a ( " b a c k t r a c k " ) , e é implementado com a c o n s t r u c ã o de uma s u b r o t i n a p a r a cada não t e r m i - n a l , E s t a s u b r o t i n a d e c i d e que produção do não t e r m i n a l deve u t i l i z a r , a n a l i s a n d o o s í m b o l o c o r - r e n t e n a e n t r a d a e comparando com o p r i m e i r o s í m - b o l o das p r o d u c õ e s . E x : - S e j a a g r a m á t i c a T -+ F T ' p r o c e d u r e E ( ) ; b e g i n T (

1 ;

ELINHA ( ) p r o c e d u r e E L I N H A ( ) ; i f s í m b o l o e n t r a d a = ' + I - t h e n b e g i n AVANCE ( ) ; T(

1 ;

ELINHA( ) e n d ; -

(19)

p r o c e d u r e T ( ) b e g i n F( 1 ; TLINHA( ) ; end ; - p r o c e d u r e TLINHA( ) ; i f símbolo e n t r a d a = ' * I - t h e n b e g i n AVANCE( ) ; F ( 1 ; T L I N H A end ; - p r o c e d u r e F( ) ; i f símbolo e n t r a d a = ' i d ' - t h e n AVANCE( ) e l s e I f símbolo e n t r a d a = ' f(' - t h e n b e g i n AVANCE ( ) ; E(

1 ;

i f símbolo e n t r a d a = '

3

'

t h e n AVANCE ( ) ; e l s e ERRO( ) -- end e l s e ERRO( ) -- 4.2.2- Método de a n á l i s e p r e d i t i v a T r a b a l h a com uma t a b e l a p r e v i a m e n t e c a l c u l a - d a , um p i l h a , a s e n t e n ç a de e n t r a d a e umasaída. A t a b e l a é um m a t r i z r e f e r e n c i a d a p o r M ( A , a ) onde A é um não t e r m i n a l e a o símbolo c o r r e n t e na e n t r a d a ,

(20)

O a n a l i s a d o r após c o n s u l t a ao símbolo X do t o p o da p i l h a pode r e a l i z a r a s s e g u i n t e s a ç õ e s : 1. Se X=a=$ o a n a l i s a d o r t e r m i n a com s u c e s s o a a n á l i - s e s i n t á t i c a da s e n t e n ç a de e n t r a d a . 2 . Se X=a#$ o a n a l i s a d o r r e t i r a X do topo da p i l h a e p a s s a ao próximo símbolo na e n t r a d a 3 . Se X é não t e r m i n a l , o a n a l i s a d o r c o n s u l t a M [X, a)

.

Se a e n t r a d a e s t á p r e e n c h i d a c o l o c a - s e no l u g a r de X no topo da p i l h a , o l a d o d i r e i t o da produção p r g e n c h i d a completando a p i l h a da d i r e i t a p a r a a e s

-

q u e r d a . Ex: M (X,a) = X + CB P i l h a E n t r a d a $AX aw$ $ABC aw$ Se o a l g o r i t m o que c a l c u l a a t a b e l a d e s t e a n a l i s a - dor s i n t á t i c o não c o n t i v e r e n t r a d a s m ú l t i p l a s p a r a o mesmo M (X,a) a g r a m á t i c a é d i t a LL(1). 4 . 2 . 3 - C a r a c t e r í s t i c a s comuns

O s d o i s métodos "top-down" acima p r e c i s a m de t e r a g r a m á t i c a p r e p a r a d a a t r a v é s de e l i m i n a ç ã o de r e

-

c u r s i v i d a d e esq-uerda e f a t o r a ç ã o a e s q u e r d a p a r a que e s t e s funcionem.

(21)

5 . Comparação e n t r e c l a s s e s de gramáticas mais conhecidas :

Livre de

Evans Contexto de operadores não ambígua L L BRC Precedência (!,I) BRC ~recedência Estendida MSP Matriz unicamente Simples Transição inversível Fraca unicamente inversível Precedência Simples

(22)

A f i g u r a a n t e r i o r m o s t r a que e x i s t e um a n a l i s a d o r s i n

-

t á t i c o LR(1) p a r a a maior p a r t e das g r a m á t i c a s p a r a métodos de a n á l i s e s i n t á t i c a c o n h e c i d o s . A d i f e r e n ç a e n t r e métodos LR(k) p a r a k > l e LR(1) em r e l a ç ã o a s g r a m á t i c a s a c e i t a s é pequena e também e n t r e o

-

t o d o LR(1) p a r a o LALR(1) e SL$($] . E n t r e t a n t o , o método L R ( O ) e LL(1) e t é c n i c a s de p r e c e d ê n c i a a c e i t a m c l a s s e s de g r a m á t i c a s bem menores e n e c e s s i t a m de m u i t a s t r a n s f o r m a

-

ções em s u a s p r o d u ç õ e s . Comparação e n t r e c l a s s e s de l i n g u a g e n s mais c o n h e c i

-

das CFL. ( livre de contexto) CFL determiníStica

LR+ .(K) k I, LALR( I), SLR(I) (1,l)

-

BRC

MSP simples

precedência simples preced6ncio fraca u.i.

.

preced6ncia operadores

O f a t o de que uma t é c n i c a de a n á l i s e s i n t á t i c a r e j e i - t a uma c e r t a g r a m á t i c a não s i g n i f i c a que r e j e i t a r á t o d a s a s o u t r a s g r a m á t i c a s d e s t a linguagem. A s t r a n s f o r m a ç õ e s de uma g r a m á t i c a em o u t r a tem p o r o b j e t i v o c o n v e r t ê - l a de forma a a c e i t a r a linguagem o r i g i n a l .

Uma linguagem p e r t e n c e a uma c l a s s e s e e x i s t e p e l o menos um reconhecedor que c a r a c t e r i z a e s t a c l a s s e capaz de

(23)

a c e i t á - l a . A c l a s s e mais e x t e n s a c o n h e c i d a é a c l a s s e das l i n g u a g e n s d e t e r m i n í ? s % i c a s que é a mesma das g r a m á t i c a s L R (k) p a r a k > 1 , LALR(1)

,

SLR(1).

É p o s s í v e l t r a n s f o r m a r q u a l q u e r g r a m á t i c a LR(k) em uma g r a m á t i c a SLR(1).

A s g r a m á t i c a s L L e s t ã o p r ó p r i a m e n t e c o n t i d a s n a s l i n g u a

-

gens d e t e r m i n í s t i c a s

.

E x i s t e m l i n g u a g e n s SLR(1) que não possuem g r a m á t i c a LL(k) o que algumas v e z e s é u t i l i z a d o p a

-

r a p r o v a r a s u p e r i o r i d a d e d a s g r a m á t i c a s LR, porém a s l i n - guagens de programação não parecem c a i r n e s t a d T v i s ã o en

-

t r e l i n g u a g e n s L L e l i n g u a g e n s d e t e r m i n í s t i c a s . A s i n c l u s õ e s e n t r e c l a s s e s de l i n g u a g e n s c o n h e c i d a s é m o s t r a d a n a f i g u - r a a n t e r i o r , 7 . A n á l i s e s i n t á t i c a L R 7 . 1 - Gramática aumentada d e r i v a d a de G D e f i n i ç ã o : S e j a G=(N,C , P , S ) uma g r a m á t i c a l i v r e de c o n t e x t o e n t ã o G '

-

g r a m á t i c a aumentada d e r i v a d a de G é d e f i n i - da como G = { N u { s ' I , ~ , P L ~ { s - + S I , S ' ) . G q é sim- p l e s m e n t e G como uma nova produção S I + S e S ' é o novo s í m b o l o i n i c i a l não p e r t e n c e n t e a N . A nova produção S'+S é numerada com o número O e a s demais produções de G 1 , 2 , .

. .

. .

.

. p . 7 . 2 - Gramática LR(k)

S e j a G=(N,C,P,S) e G1=(NI ,C , P f , S I ) d i z - s e que G é LR(k), k > = O s e p a r a que ocorram a s t r ê s con

-

d i ç õ e s

1. SI

-*

+

~ A w

+ a 8 w

(24)

G 'md G 'md 3 . FIRSTk

(k)

= FIRSTk ( y ) e n t ã o a A y = Y B x i s t o

6

a =

Y

,

A=B e x = y . Uma g r a m á t i c a

6

LR. s e

é

LR(k) p a r a algum k . 7 . 3 - A n a l i s a d o r s i n t á t i c o LR O a n a l i s a d o r s i n t á t i c o LR é um método "bottom

-

up" do t i p o " s h i f t - r e d u c e " onde a s t a b e l a s do a n a l i - s a d o r s ã o u t i l i z a d a s p a r a i n d i c a r a s a ç õ e s de empi

-

l h a , r e d u z , a c e i t a e e r r o . A f i g u r a a b a i x o i n d i c a o s e u f u n c i o n a m e n t o . Pilha

r

A e n t r a d a é l i d a da e s q u e r d a p a r a a d i r e i t a e um símbolo de cada v e z . A p i l h a contém a c a d e i a da forma

s x s x s

---

0 1 1 2 2 'mSm ... a Xi- s í m b o l o da g r a m á t i c a Si- e s t a d o q u a l q u e r I a 2 I a k l I a n l $

I

Entrada Sm- e s t a d o no t o p o d a p i l h a

(25)

S e j a a c o n f i g u r a ç ã o de um a n a l i s a d o r LR o p a r o r d e n a - do t e n d o como p r i m e i r o componente o conteúdo da p i l h a e o segundo a e n t r a d a não e x p a n d i d a .

O a n a l i s a d o r d e t e r m i n a o e s t a d o Sm no t o p o da p i l h a

,

o s í m b o l o ak c o n s t a n t e , e e n t ã o da c o n f i g u r a ç ã o

X S , a k ' a k + l . .

.."

( ~ 0 X 1 ~ 1 X 2 ~ 2

-

a n $ ) pode p a s s a r a o u t r a s c o n f i g u r a ç õ e s dependendo da c o n s u l t a a s t a b e l a s ACÃO e GOTO.

A e n t r a d a ACAO

1

S m , a k ) pode i n d i c a r um dos s e g u i n t e s v a l o r e s

1. e i ( e m p i l h a o e s t a d o i )

O a n a l i s a d o r e m p i l h a o e s t a d o S e p a s s a a c o n f i g u

i

-

r a ç ã o

onde Si = GOTO (Sm, ak) e ak+l p a s s a a s e r o s í m b o l o c o r - r e n t e da e n t r a d a .

2 . r

j ( r e d u z i r p e l a produção j )

O a n a l i s a d o r u t i l i z a a produção de número j (A-tB) de tamanho r e reduz r e s t a d o s e r s í m h o l o s da g r a - m á t i c a n a p i l h a e p a s s a a s e g u i n t e c o n f i g u r a ç ã o

onde S = GOTO (Sm- r, A ) e a k c o n t i n u a como s í m b o l o

c o r r e n t e de e n t r a d a .

0 s r símbolos da g r a m á t i c a r e d u z i d o s s ã o exatamen- t e o s mesmos do l a d o d i r e i t o da produção j , i s t o é ,

(26)

O a n a l i s a d o r t e r m i n a a a n á l i s e s i n t á t i c a com s u

-

c e s s o . 4 . b r a n c o ( e r r o ) A s e n t r a d a s em b r a n c o indicam a e x i s t ê n c i a de um e r r o na c o n s t r u ç ã o da s e n t e n ç a de e n t r a d a , e deve s e r chamada r o t i n a de e r r o . Exemplo : S e j a a g r a m á t i c a aumentada

N?

produção Produção A t a b e l a LALR(1) c o r r e s p o n d e n t e é

(27)

E s t a d o

o

1 2 3 4 5 6 7 8 9 AÇÃO GO TO

*

i d $ S L R e4 e5 1 2 3 a c c r 5 r 2 e4 e5 r 4 e4 e5 r 3 r 5 r1 S e j a a s e f i t e n ç a * * i d = i d , O s movimentos da p i l h a - e s e n t e n

-

ç a de e n t r a d a s ã o m o s t r a d o s a s e g u i r .

(28)

P i l h a E n t r a d a Ação e 4 e 4 e 5 r 4 r 5 r 3 r 5 r 3 e 6 e 5 r 4 r 5 r1 a c c

(29)

7 . 4 - C o n s t r u ç ã o das t a b e l a s de a n á l i s e s i n t ã t i c a SLR(1) 7 . 4 . 1 - I t e m LR(0) Um i t e m LR(0) de uma g r a m á t i c a G

é

uma p r o d u

-

ç ã o de G com um p o n t o em alguma p o s i ç ã o do l a d o d i r e i

-

t o . Exemplo : S e j a G E -t T E ' E ' - + + T E 1 l s T + FT T 1 + *FT1 F + (E)

I

i d São i t e n s LR(0) da produção E+ T E ' E; = T E 1 E+ T O E ' E T E 1 * A produqão E ' + € S Õ tem um i t e m LR(0) r e p r e - s e n t a d o p o r E

'+-

O s i t e n s LR(0) s ã o r e p r e s e n t a d o s no computa

-

d o r p o r um p a r de i n t e i r o s , o p r i m e i r o r e p r e s e n t a n d ò o número da p ~ o d u ç ã o e o segundo a p o s i ç ã o do p o n t o d e n t r o da p r o d u ç ã o . 7 . 4 . 2 - FECHAMENTO ("CLOSURE") de um c o n j u n t o de i - t e n s LR(0) O FECHAMENTO de um c o n j u n t o de i t e n s I chama- do de CLOSURE(1)

6

um o u t r o c o n j u n t o c r i a d o d a s e g u i n

-

t e f o r m a : 1. Todo i t e m do c o n j u n t o p e r t e n c e ao FECHA - MENTO

(30)

2 . Se A + a * B B p e r t e n c e ao FECHAMENTO e n t ã o os i t e n s B + - y s ã o a d i c i o n a d o s ao FECHAMENTO s e j á não e s t i v e r e m l á . Exemplo: s e j a a g r a m á t i c a G do exemplo a n t e

-

r i o r . S e j a o c o n j u n t o de i t e n s de um ú n i c o i tem I = { ( E +- T * E 1 ) ) e n t ã o CLOSURE ( I ) contém os s e g u i n

-

t e s i t e n s Algorítmo p a r a c á l c u l o de C L O S U R E ( 1 ) p r o c e d u r e CLOSURE ( I ) ; - b e g i n r e p e a t

f o r cada i t e m A -+ a - B B em I e cada produção - B + y em G t a i s que B + = y não p e r t e n c e a I do a d i c i o n e B + - y a I - u n - t i l não e x i s t i r i t e n s a a - l i c i o n a ? em I ; r e t u r n I ;

(31)

7 . 4 . 3 - D e f i n i ç ã o da f u n ç ã o

GOTO(1,X)

S e j a I um c o n j u n t o de i t e n s

LR(0)

e X um s í m - b o l o da g r a m á t i c a .

GOTO(1 ,X)

é o

FECHAMENTO(CLOSURE(J)

) onde

J

é o c o n j u n t o de i t e n s

LR(0)

com i t e n s da forma (A + a

X

s f 3 ) t a i s que (A-+ a * X I ) p e r t e n ç a m a I . Ex: S e j a a g r a m á t i c a

G

E

+

TE'

E'

+

+TE'[&

T

+

FT'

T'

+

"FT'

F

+

(E)

I

i d e I, c o n j u n t o de i t e n s

LR(0)

e s t e c o n j u n t o de i t e n s p o s s u i r e s u l t a d o p a r a a f u n ç ã o

GOTO

p a r a o s s í m b o l o s da g r a m á t i c a

T ,

F , ( e i d , c a l c u l a d o s a b a i x o :

GOTO

(I ,T)

=

CLOSURE (J)

:

E+ T

E

'

E$*+

T E ' E 5

(32)

GOTO ( 1 , i d ) : J = { ( F -+ i t í * )

1

GOTO ( 1 , i d ) = CLOSURE(J): F+ i d - 7 . 4 , 4 - C o n s t r u ç ã o dos c o n j u n t o s de i t e n s LR(0) A c o n s t r u ç ã o das t a b e l a s de a n á l i s e s i n t á t i c a SLR(1) p a r t e dos c o n j u n t o s de i t e n s LR(O), e c a d a um d e s t e s a p r e s e n t a um e s t a d o n a a n á l i s e s i n t á t i c a . O a l g o r í t m o p a r a c á l c u l o dos c o n j u n t o s de i t e n s LR(0) é i n d i c a d o a b a i x o p r o c e d u r e ITENS ( G ' ) ; b e g i n C: = {CLOSURE ({SI -+-

s'])

} f o r c a d a c o n j u n t o de i t e n s em C e c a d a símbolo -

X t a l que GOTO(1 ,X) não

6

v a z i o e não e x i s -

do a d i c i o n e GOTO(1,X) a C

-

u n t i l não e x i s t i r c o n j u n t o s de i t e n s a a d i c i o n a r a C .

7 . 4 . 5 - c á l c u l o d a s r e l a ç õ e s FIRST e FOLLOW em uma g r a m á t i c a 7 . 4 . 5 . 1 - FIRST P a r a c a l c u l a r FIRST(X) p a r a t o d o s o s s í m b o l o s X de uma g r a m á t i c a , b a s t a a p l i c a r a s t r e s r e g r a s a b a i x o a t é não s e r p o s s í v e l a d i

-

c i o n a r mais t e r m i n a i s ou E a q u a l q u e r c o n j u n - t o FIRST(X) : 1. Se X é t e r m i n a l e n t ã o FIRST(X)

6

{ X

1

2 . Se X não é t e r m i n a l e X + a a é uma produ-

ç ã o , e n t ã o a d i c i o n e a ao FIRST(X)

.

Se X+E

é uma produção e n t ã o a d i c i o n e E ao FIRST

(33)

3 . Se X + YIY 2 . . . Y k é uma p r d d u ç ã o , e n t ã o

p a r a todo i t a l que Y1,.

.

.

.

sejam não t e r m i n a i s e FIRST(Y-) c o n t e n h a E pa-

J

r a j = 1 , 2 , .

...

i-1 ( i . e Y 1 Y 2 . . . . Y i - l *+E)

,

a d i c i o n e t o d o símbolo em FIRST(Yi), mas não E , ao FIRST(X)

.

Se E p e r t e n c e ao FIRST

(YJ) p a r a t o d o j = 1 , 2 . .

.

.

,k

e n t ã o a d i c i o n e E ao FIRST (X). P a r a c a l c u l a r FIRST de q u a l q u e r c a d e i a X1X2..

. .

.

.Xn deve-se a d i c i o n a r ao FIRST (X1X2.

.

. X n ) p a r a i = 2 , .

.

, n o FIRST(Xi) não c o n s i d e r a n d o o E s e o FIRST(Xi-l) c o n t i v e r E . Finalmente a d i - c i o n a - s e o E s e FIRST (Xi) contém E p a r a i = l ,

.

A r e l a ç ã o FIRST f o i a q u i a p r e s e n t a d a p o r s e r n e c e s s á r i a p a r a o c á l c u l o da r e l a ç ã o FOLLOW que p o r s u a vez é u t i l i z a d a no c á l c u l o das t a b e l a s do a n a l i s a d o r s i n t á t i c o SLR(1). A r e l a ç ã o FIRST é u t i l i z a d a p a r a c á l - c u l o das t a b e l a s LALR(1) e LR(1) p o s t e r i o r m e n t e a p r e s e n

-

t a d a s

.

7 . 4 . 5 . 2 - FOLLOW P a r a c a l c u l a r FOLLOW(A) p a r a t o d o s os não t e r m i n a i s de uma g r a m á t i c a , b a s t a a p l i c a r a s t r ê s r e g r a s a b a i x o a t é não s e r p o s s í v e l a d i c i o n a r t e r m i n a i s a q u a l q u e r c o n j u n t o FOLLOW(A) :

1. $ p e r t e n c e ao FOLLOW(S) onde S

é

o símbolo i n i c i a l 2 . Se e x i s t e uma produção A-taBB ,B $ E e n t ã o todo t e r

-

mina1 p e r t e n c e n t e ao FIRST(B) p e r t e n c e ao FOLLOW (B)

3. Se e x i s * uma produção A-taB, ou uma produção A+aBB

*

onde FIRST(B) contém E ( i . e

B

-+ E ) , e n t ã o os t e r

-

m i n a i s p e r t e n c e n t e s ao FOLLOW(A) pertencem ao FOL

-

LOW(B)

.

(34)

7 , 4 . 6 - C á l c u l o da t a b e l a SLR(1) S e j a C = ( I o , I 1 , .

. . .

.

,

I n } O c o n j u n t o de t o d o s o s c o n j u n t o s de i t e n s L R ( 0 )

.

A s a ç õ e s do a n a l i s a d o r s i n t á t i c o p a r a o e s t a d o i c o r r e s p ó n d e n t e ao c o n j u n t o de i t e n s I i s ã o d e t e r m i n a d o s como a s e g u i r : 1. Se (A-a-af3) E I i e GOTO ( I i , a ) = I . e n t ã o J AÇAO ( i , a ) = e m p i l h a j ( e . )

,

a é um t e r m i n a l 7

2 . Se ( A - a = ) & I i , e n t ã o ACAO ( i , a ) = r e d u z a p o r A+a p a r a t o d o a em FOLLOW(A)

.

3. Se (SI +S.) € I i e n t ã o ACAO ( i

$ 1

= a c e i t a Se não e x i s t e m a ç õ e s c o n f l i t a n t e s n a s r e g r a s acima a g r a m á t i c a é d i t a SLR(1). Ex: S e j a a g r a m á t i c a c a l c u l a n d o o s c o n j u n t o s de i t e n s L R ( 0 ) de forma j á e x p l i c a d a t e r e m o s :

(35)

I 5 : S + C C * I 6 : C + c c *

Temos também p a r a r e l a ç õ e s GOTO, FIRST, FOLLOW:

FIRST(S) = ' { c , d) FIRST(C) = [ c , d ) FOLLOW(Sv) =

€ $ I

FOLLOW(S) =

{$I

FOLLOW(C) = f c , d , $ ) e f i n a l m e n t e p a r a a t a b e l a SLR(1) t e r e m o s : ACÃO GOTO E s t a d o C d $ S C e 3 e4 1 2 a c c e 3 e4 5 e 3 e4 6 r 3 r 3 r 3 r1 r 2 r 2 r 2 7 . 5 - C o n s t r u ç ã o d a s t a b e l a s de a n á l i s e s i n t á t i c a LR(1) 7 . 5 . 1 - I t e m LR(1)

Um I t e m LR(1) de uma g r a m á t i c a G

6

uma produ- ç ã o com um p o n t o em alguma p o s i c ã o do l a d o d i r e i t o e um s í m b o l o t e r m i n a l chamado "lookahead" do i t e m .

(36)

Um p r e f i x o v i á v e l é o p r e f i x o da forma s e n t e ; c i a l a d i r e i t a que não contém s í m b o l o s a d i r e i t a do " h a n d l e " . Um i t e m LR(1) (A+a * @ , a ) é v á l i d o p a r a um

. b

p r e f i x o v i á v e l y s e e x i s t e a d e r i v a ç ã o S

;

SAw+Ga@w ,

r m , r m

onde y=Sa e a é o p r i m e i r o símbolo de w ou w e E e a

Ex: S e j a a g r a m á t i c a

*

+ -f E x i s t e uma d e r i v a ç ã o a d i r e i t a Srm ccCcd cccCcd o i t e m (C=+c-C,c)

é

v á l i d o p a r a o p r e f i - xo v i á v e l y = c c c p o i s B=cc, A=C,w-=cd, a = c e @ = C n a d e f i n i ç ã o dada acima. ( C + c - C, $ ) é v á l i d o p a r a o p r e f i x o Ccc p o i s

*

S + + r m CccC e 6=Cc A=C w = E a = c r m O s i t e n s LR(1) s ã o r e p r e s e n t a d o s no computa

-

d o r p o r um t e r n o de i n t e i r o s o p r i m e i r o r e p r e s e n t a n d o o número da p r o d u ç ã o , o segundo a p o s i ç ã o do p o n t o d e n t r o da p r o d u ç ã o , e o t e r c e i r o o número do t e r m i n a l "loakahead". 7 . 5 . 2 - FECHAMENTO ("CLOSURE") de um c o n j u n t o de i t e n s LR(1) O FECHAMENTO de um c o n j u n t o de i t e n s I chama- do CLOSURE(1) é um o u t r o c o n j u n t o de i t e n s c r i a d o da s e g u i n t e forma: 1. Todo i t e m do c o n j u n t o p e r t e n c e ao FECHAMENTO 2 . Se (A + a g B @ , a ) p e r t e n c e ao FECHAMENTO, e n t ã o os

(37)

i t e n s ( B -+ * y , b ) onde b p e r t e n c e ao FIRST ( Ba) s ã o a d i c i o n a d o s ao FECHAMENTO s e

j á

não e s t i v e r e m

l á .

S e j a a g r a m á t i c a G S ' + E E -+ T E ' E ' -+ + T E ' ] & T -+ FT' T ' -+ *FT' F -+ '(E)

I

i d e s e j a I = { ( S f - + - E

,

,

4 )

3

a r e l a ç ã o FIRST tem os s e g u i n t e s v a l o r e s a p l i c a n d o a s r e g r a s p a r a c á l c u l o de CLOSURE ( I ) obtém-se ( S ' - + * E ;

$1

(E + = T E T , $ ) (T - + * F T t , + ) (T - + * F T 1 , $ ) (F - + - ( E ) , *) (F - + * i d , * )

(38)

Algoritmo p a r a c á l c u l o de CLOSURE(1) p r o c e d u r e CLOSURE ( I ) r e p e a t f o r cada i t e m (A + a = * i ~ , a ) em I , cada - produção B +y

,

e cada t e r m i n a l b em FIRST (Ba) t a l que (B+- y ,b) não p e r t e n c e a I do a d i c i o n a r ( B li-*y, b) a I ; - u n t i l não e x i s t i r i t e n s a a d i c i o n a r a I . r e t u r n I e n d ; - 7 . 5 . 3 - D e f i n i ç ã o da função GOTO(1 ,X) S e j a I um c o n j u n t o de i t e n s LR(1) e X um sím- b o l o da g r a m á t i c a .

GOTO(1 ,X) é o FECHAMENTO (CLOSURE ( J ) ) onde J

é o c o n j u n t o de i t e n s LR(1) com i t e n s da forma

(A+

15 X ; B , a ) t a i s que ( A +a*;XB , a ) p e r t e n ç a m a - - I . Ex:- S e j a a mesma g r a m á t i c a G e c o n j u n t o de

i t e n s LR(1) do exemplo a n t e r i o r

e s t e conjufito de i t e n s p o s s u i r e s u l t a d o p a r a a função GOTO p a r a o s símbolos da g r a m á t i c a E , T , F ? ( e i d c a l c u 2 a d o s a b a i x o :

(39)

GOTO(1,T) : J = { ( E + T - E ' , $ ) } GOTO ( I

,

F) =CLOSURE (J) :

T+

F=T

'

,

+ T+ F * T 1 , $ T+ e * F T v , + T-t

= *

F T ' , $ GOTO ( I , i d ) = CLOSURETJ) = F + i d a ,

*

7 . 5 ' 4 - C o n s t r u ç ã o dos c o n j u n t o s de i t e n s LR(1) A c o n s t r u ç ã o d a s t a b e l a s de a n á l i s e s i n t á t i - x a LR(1) p a r t e dos c o n j u n t o s de i t e n s L R ( l ) , e c a d a um d e s t e s r e p r e s e n t a um e s t a d o da a n á l i s e s i n t â t i c a . O a l g o r í t m o p a r a c á l c u l o dos c o n j u n t o s de i t e n s LR(1)

é

i n d i c a d o a s e g u i r .

(40)

p r o c e d u r e GOTO(I ,X) ; --- b e g i n S e j a J o c o n j u n t o de . i t e n s (A+ a X - @ , a ) , t a l que (A+a*XB, a ) p e r t e n c e a I ; r e t u r n CLOSURE (J) e n d ; - p r o c e d u r e ITENS (G ' )

---

b e g i n -- C : = {CLOSURE ( ( S ' + O S , $ ) )

1

f o r c a d a c o n j u n t o de i t e n s I em C e c a -

-

da s í m b o l o da g r a m á t i c a X t a l que GOTO(1 , X ) não

6

v a z i o e não p e r t e n -

do a d i c i o n a r GOTO(1,X) a C - u n t i l não e x i s t i r c o n j u n t o s de i t e n s a a

-

d i c i o n a r a C end 7 . 5 . 5 - c á l c u l o da t a b e l a LR(1) S e j a C = ( I i , I 1 ,

. .

.

, I n ) O c o n j u n t o de t o d o s os i t e n s LRI1)As a ç õ e s do a n a l i s a d o r s i n t á t i c o p a r a o e s t a d o i c o r r e s p o n d e n t e ao c o n j u n t o de i t e n s I s ã o d e t e r m i n a d a s como a s e g u i r : 1. Se (A+a - a $ , b) E I i e GOTO(Ii,a) = I . e n t ã o J AÇÃO ( i ,a ) = e m p i l h a j ( e .) , a

6

um t e r m i n a l . J 2 . Se (A+ a , a ) E I i e n t ã o AÇAO ( i , a ) = r e d u z a p o r A +a

(41)

3 . Se ( S 1 + S . , $ ) & I i , e n t ã o AÇAO ( i , $ ) = a c e i t a

Se não e x i s t e m ações c o n f l i t a n t e s nas r e g r a s acima a g r a m â t i c a é d i t a LR(1).

S e j a a g r a m ã t i c a G

c a l c u l a n d o o s c o n j u n t o s de i t e n s LR(1) obtem-

- s e :

(42)

da função GOTO tem-se

GOTO(O;S)=l, GOTO(O,C)=2, GOTO(O,c)= 3 , GOTO(0,d) = 4

GOTO(Z,C)=5, GOT0(2,c)=6, GOT0(2,d)= 7

GOT0(3,C)=8, GOT0(3,c)=3, GOT0(3,d)= 4

GOT0(6,C)=9, GOT0(6,c)=6, GOT0(6,d)= 7

e finalmente a tabela LR(1) : AÇÃO Estado C GOTO S C 1 2 acc

(43)

7 . 6 - Construção das t a b e l a s de a n a l i s e s i n t á t i c a LALR(1) 7 . 6 . 1 - Método s i m p l i f i c a d o R e a l i z a r os s e g u i n t e s p a s s o s : C o n s t r u i r C = { I o , I 1 , . . . , I n ) , a c o l e ç ã o dos c o n j u n t o s de i t e n s LR(1). P a r a c o n j u n t o s de i t e n s que tenham a s mesmas produções e p o s i ç õ e s do p o n t o , s u - b s t i t u i r e s t e s c o n j u n t o s p e l a s u a u n i ã o . S e j a C 1 = ( J 0 , J 1 , .

...

J ) os c o n j u n t o s de n i t e n s LR(1) r e s u l t a n t e s , A s ações do ana- l i s a d o r s i n t á t i c o LALR(1) p a r a o e s t a d o i s ã o c o n s t r u í d o s do c o n j u n t o de i t e n s J . d e 1 manèira i d ê n t i c a a da c o n s t r u ç ã o p a r a t a - b e l a s LR(1). Se não e x i s t e m c o n f l i t o s a

-

pós a p l i c a ç ã o d a q u e l e a l g o r í t m o , a gramá- t i c a é d i t a LALR(1). A s t a b d a s da função GOTO s ã o c o n s t r u í d a s como s e s e g u e . Se J é a u n i ã o de um ou mais c o n j u n t o s de i t e r s com a s mesmas produções e p o s i ç õ e s de p o n t o , i . e . , J = I UI U . . . U I m e K a u n i ã o

1 2

dos c o n j u n t o s que tem a s mesmas produções e p o s i ç õ e s do ponto de BOTO(I1 , X ) e n t ã o GOTO(J,X) = K . S e j a a g r a m á t i c a : S ' + S S -t CC C + c C Id do exemplo a n t e r i o r Dos c o n j u n t o s de i t e n s LR(1) do exemplo a n t e -

(44)

r i o r , v e r i f i c a - s e que podem s e r u n i d o s o s s e g u i n t e s c o n j u n t o s : As f u n ç õ e s

GOTO

f i c a m da s e g u i n t e forma: e f i n a l m e n t e p a r a t a b e l a s LALR(1) tem-se

A G O

COTO

E s t a d o C d $ S C O e36 e47 1 2 1 a c c 2 e 36 e4 7 5 3 e 36 e47 89 4 r 3 r 3 r 3 5 r1 6 r 2 r 2 r 2 E s t e método a p e s a r de s i m p l e s g a s t a m u i t o e s - paço p o i s p a r t e dos c o n j a n t o s de i t e n s LR(1).

A

s e

-

g u i r s e r á a p r e s e n t a d o a l g o r í t m o , o programado n a t e

-

s e , que p a r t e do c o n j u n t o de i t e n s LR(0) com número m u i t o menor que o LR(1).

(45)

7 . 6 . 2 - Método p a r a menor e s p a ç o 7 . 6 . 2 . 1 - I t e m c e n t r a l Os i t e n s c e n t r a i s s ã o a q u e l e s não a d i c i o - nados a um c o n j u n t o de i t e n s a t r a v e s do FECHAMENTO des t e s a Um i t e m c e n t r a l

6

r e c o n h e c i d o f a c i l m e n t e p o i s ou é o i t e m ( S I + S , $ ) , p a r a i t e m c e n t r a l LR(0) é ( S I + S) , ou p o s s u i um s í m b o l o a e s q u e r - da do p o n t o .

7 . 6 . 2 . 2 - "Lookaheads" propagados e g e r a d o s espon- t ane amen t e

*

, +

S e j a o i t e m (A-6. Cy

,

a ) em 11, Ea e E+ XB uma p r o d u ç ã o , podendo a = € e C=E o s i t e n s ( E+ x.6 , b ) t a i s que b ~ FIRST ( a i p e r - tencem ao GOTO(1 ,X) e d i z - s e que b

é

g e r a d o e s p o g

1,

taneamente como "100kaheai!'-~ p a r a E+ X

8.

*

Se n a s i t u a ç ã o acima ay+E e n t ã o os i t e n s ( E + )í*B , a ) também p e r t e n c e m ao GOTO(I1 ,X)

.

D i z - s e n e s t e c a s o que o s s í m b o l o s ass.ãq. - p r o

-

pagados como " l o o k a h e a d s " de A+B*Cy p a r a E+X

* B .

Um a l g o r í t m o que d e t e r m i n a quando um i t e m LR(1) em I g e r a um "lookahead" e s p o n t a n e a m e n t e em GOTO(1 ,X) ou p r o p a g a é i n d i c a d o a s e g u i r : E n t r a d a : O c o n j u n t o K de i t e n s c e n t r a i s em um c o n j u n t o I de i t e n s LR(0) , e um s í m b o l o d a gramá

-

t i c a X. S a í d a : P a r a cada i t e m c e n t r a l A+aX-8 de GOTO(1, X)

,

é p r o d u z i d o o c o n j u n t o de t'lookahbads"ge

-

r a d o s e s p o n t a n e a m e n t e de i t e n s em I e a q u e l e s i t e n s

(46)

c e n t r a i s em 7 que propagam "lookaheads" p a r a A-taX-f3 em GOTO ( I , X)

.

Método: O a l g o r r t m o u s a um s í m b o l o f i c t i c i o

&

pa- r a d e t e c t a r s i t u a ç õ e s em que o s " l o o k a h e a d s " s ã o p r o p a g a d o s .

f o r c a d a i t e m B + y - 8 em K - do b e g i n

J

'

: = CLOSURE ( { (E-;+Y 8 ,&)

--

1 )

if(A+a*'XB,a) E J ' onde a não

6

#

- t h e n o "lookahead" a

é

g e r a d o espontaneamen

--

-

t e p a r a i t e m A +aX-f3 em GOTO(1 ,X)

.

t h e n o "lookahead" é propagado de B -t y - 6 em I p a r a A+aX.B em GOTO(1,X) end 7 . 6 . 2 . 3 - C o n s t r u ç ã o dos c o n j u n t o s de i t e n s LALR(1) E n t r a d a : A g r a m á t i c a G aumentada p e l a p r o - ducáo S ' + S , S a í d a : 0 s c o n j u n t o s de i t e n s LALR(1) de G . Método: 1. C o n s t r u i r o s c o n j u n t o s K formado p e l o s i t e n s c e n t r a i s dos c o n j u n t o s I de i t e n s LR(0) de G . 2 . P e l o a l g o r i t m o a n t e r i o r d e t e r m i n a - s e pa

-

r a cada i t e m LR(0) (A+a*B) em K , e p a r a r a c a d a s i m b o l o da g r a m á t i c a X em que i t e n s c e n t r a i s (B-ty-6) de GOTO(1,X) o s

(47)

"lookaheads" s ã o propagados e A+a*f3 em I p a r a B+ y g 8 em GOTO(1,X).

Determina-se também os "lookaheads" ge- r a d o s espontaneamente p a r a B+y-6 em GOTO(1 ,X)

.

3. C r i a - s e uma p i l h a de t e r n o s ( I , A + a e f 3 , a ) onde I

é

um c o n j u n t o de i t e n s LR(0) , A+a*B um i t e m c e n t r a l de I e a um s5mbo - 10 t e r m i n a l t a l que (A+a*B,a) p e r t e n c e ao c o n j u n t o de i t e n s LALR(1) que p o s s u i a s mesmas produções e p o s i ç õ e s do ponto que I . U t i l i z a - s e um v e t o r de " b i t s " pa

-

r a i d e n t i f i c a r s e um t e r n o j á f o i i n s e - r i d o a t r a v é s da r o t i n a INSERE.

O a l g o r i t m o a b a i x o c r i a p a r a c a d a c o n j u n t o de i t e n s LR(0) I , e p a r a c a d a i t e m c e n t r a l (A+a-B) de I , uma l i s t a dos c o n j u n t o s de "lookheads" p a r a A+a-f3 no c o n j u n t o de i t e n s LALR(1) c u j a s produções e p o s i - ções do p o n t o s ã o i g u a i s a s de I . p r o c e d u r e INSERE ( I , A +as8 , a ) ; i f n o t ON ( I , A + a + B , a ) - - t h e n b e g i n c o l o c a (1,A-m-B,a) em PILHA; ON ( I , A + a * B , a ) : = t r u e ; end

(48)

b e g i n

f o r todo I ,A+a=B e a dó O N ( 1 ,A+a.B,a) : = f a l s e :

-

PILHA : = v a z i o ;

INSERE ( I ~ i , ~ S t ~ ~ S , $ ) ;

f o r cada I,A+a0B e a t a l q-ue a é gerado e s p o n t a -

-

neamente como "lookahead" de A+a*B em I do INSERE ( I , A + a * B , a ) ; - w h i l e P I L H A não v a z i a - do b e g i n r e t i r a ( J , B + y * o , a ) , o t e r n o do topo da PILHA f o r cada símbolo da g r a m á t i c a X do -

-

f o r cada i t e m c e n t r a l A+a-B do GOTO(J ,X)

-

t a l que B+y*13 propaga "lookaheads" pa r a A+a-6 em GOTO(J,X) - do INSERE(GOT0

( J , X ) , A+a*B,a) end

(49)

111- IMPLEMENTAÇÃO

1. E s c o l h a da Linguagem

A linguagem e s c o l h i d a f o i o ALGOL p a r a o computador Bur

-

roughs B 6 7 0 0 p e l o s s e g u i n t e s m o t i v o s :

-

E s t e computador e s t á i n s t a l a d o no ~ ú c l e o de Computação E l e t r Ô n i c o e

é

o que a t e n d e a maior p a r t e dos u s u á r i o s

d e s t e Núcleo.

-

A linguagem ALGOL tem uma e s t r u t u r a p a r a a programação dos a l g o r i t m o s que p e r m i t e f á c i l compreensão, documen- t a ç ã o e manutenção d e s t e s ,

-

E s t a linguagem é b a s t a n t e d i f u n d i d a no meio c i e n t í f i c o c r i a n d o p o s s i b i l i d a d e de u t i l i z a ç ã o do p r o d u t o d e s t a t e s e em o u t r o s l o c a i s .

-

Apesar de s e r uma linguagem de a l t o n í v e l e s t a p o s s u i c a r a c t e r ~ s t i c a s que permitem implementação e f i c i e n t e dos a l g o r ~ t m o s .

(50)

2 . D e s c r i ç ã o Geral do Gerador GERADOR

O

PROCEDIMENTOS DESEJADOS HOWE DE FIRST DE FIRST

,

I

,

I

,

I

,

CALCULk IMPRIME CALCULA IMPRIME ROTINAS ROTINA

FIRST

.

FIRST FOLLOW FOLLOW SLR(I)'cxlA11R(I) LR(I)

GERAR CONJVNTOS DE ITENS L R (O) IMPRESSÁO L R (O) VERIFICA CALCULO TABE- TABELAS ROTINA LALR(I) I GERAR I CON,JUNTOS

I

I

DE ITENS GERAR TABELAS

(51)

I n i c i a l m e n t e uma e t a p a de conversão

é

r e a l i z a d a . E s t a e t a - pa c o n s i s t e em a p a r t i r dos c a r t õ e s contendo a g r a m á t i c a de en

-

t r a d a ( V . 1 . 1 . 1 ) , r e a l i z a a n á l i s e s i n t á t i c a e g e r a ç ã o de e s t r u - t u r a i n t e r n a t e m p o r á r i a d e s t a g r a m á t i c a . São também impressos o s r e l a t 6 r i o s ; g r a m á t i c a de e n t r a d a e mensagens de e r r o , r e p r e s e n

-

t a ç ã o i n t e r n a de t e r m i n a i s e r e p r e s e n t a ç ã o i n t e r n a dos não t e r

-

m i n a i s ,

A s e g u i r obtém-se da l e i t u r a do c a r t ã o p a r â m e t r o PROCED os procedimentos d e s e j ados

.

Ver (V. 1 . 1 . 2 ) p a r a maiores d e t a l h e s .

A g e r a ç ã o das t a b e l a s

6

e n t ã o i n i c i a d a e

s ó

é r e a l i z a d a s e não houve e r r o g r a v e na c o d i f i c a ç ã o da g r a m á t i c a de e n t r a d a

.

E s t a g e r a ç ã o c o n s i s t e dos s e g u i n t e s p a s s o s : i- Passagem da e s t r u t i i r a i n t e r n a t e m p o r á r i a da g r a m á t i c a montada p e l a conversão p a r a e s t r u t u r a u t i l i z a d a p e l o s a l g o r í t m o s

.

ii- Impressão das produções com o s símbolos n a s u a r e p r e - s e n t a ç ã o i n t e r n a .

iii- C á l c u l o da r e l a ç ã o FTRST p a r a a g r a m á t i c a de e n t r a d a s e algum dos procedimentos s o l i c i t a d o s p r e c i s a m d e s t e c á l c u l o .

i v - Impressão de r e l a t ó r i o com a r e l a ç ã o FIRST p a r a t o d o s os s ~ m b o l o s não t e r m i n a i s da g r a m á t i c a de e n t r a d a , s e o procedimento FIRST f o i s o l i c i t a d o no c a r t ã o PROCED. v- C á l c u l o da r e l a ç ã o FOLLOW p a r a a g r a m á t i c a de e n t r a d a

s e algum dos procedimentos s o l i c i t a d o s p r e c i s a m d e s t e c á l c u l o .

v i - Impressão de r e l a t ó r i o com a r e l a ç ã o FOLLOW p a r a t o d o s os símbolos não t e r m i n a i s da g r a m á t i c a de e n t r a d a s e o procedim~rznto FOLLOW f o i s o l i c i t a d o no c a r t ã o PROCED.

(52)

v i i - Se e x i s t e a n e c e s s i d a d e de c â l c u l o dos c o n j u n t o s de i t e n s LR(0) o que o c o r r e s e o c a r t ã o PROCED r e q u e r p r o

-

cedimentos SLR ou L A L R 1 , s ã o r e a l i z a d o s n a ordem:

-

Cálculo dos c o n j u n t o s de i t e n s LR(0)

-

Impressão de r e l a t ó r i o com a r e l a ç ã o GOTO p a r a e s

-

t e s c o n j u n t o s de i t e n s .

-

Se o c a r t ã o PROCED r e q u e r o procedimento SLR, c a l c u

-

l a - s e a t a b e l a p a r a a n á l i s e s i n t á t i c a SLR(1). São impressos também o s r e l a t ó r i o s ; c o n j u n t o s de i t e n s LR(O), t a b e l a de a n á l i s e s i n t á t i c a SLR(1) e c o n f l i - t o s na t a b e l a de a n á l i s e s i n t á t i c a SLR(1).

-

Se o c a r t ã o PROCED r e q u e r o procedimento LALR1, ge- ram-se os c o n j u n t o s de i t e n s LALR1 com a l g o r í t m o que p a r t e dos c o n j u n t o s de i t e n s LR(O), e a s e g u i r c a l

-

c u l a - s e a t a b e l a p a r a a n á l i s e s i n t á t i c a LALR(1). São impressos também os r e l a t ó r i o s ; c o n j u n t o s de i t e n s LALR(1) , t a b e l a de a n á l i s e s i n t á t i c a LALR(1) e con -

f l i t o s na t a b e l a de a n á l i s e s i n t á t i c a LALR(1).

v i i i - S e e x i s t e a - n e c e s s i d a d e de c á l c u l o dos c o n j u n t o s de i t e n s LR(1) , o que o c o r r e s e o c a r t ã o PROCED r e q u e r p r o

-

cedimento LR1, s ã o r e a l i z a d o s na ordem:

-

C á l c u l o dos c o n j u n t o s d e i t e n s L R ( l ) ,

-

Impressão de r e l a t ó r i o com a r e l a ç ã o GOTO p a r a e s t e s c o n j u n t o s de i t e n s .

-

~ á l c u l o das t a b e l a s p a r a a n á l i s e s i n t á t i c a LR(1) .São impressos também os r e l a t ó r i o s ; c o n j u n t o s de i t e n s L R ( l ) , t a b e l a de a n á l i s e s i n t á t i c a LR(1) e c o n f l i t o s na t a b e l a de a n ã l i s e s i n t á t i c a LR(1).

(53)

3 , R e p r e s e n t a ç ã o das e s t r u t u r a s i m p o r t a n t e s u t i l i z a d a s

3.1- R e p r e s e n t a ç ã o da g r a m á t i c a de e n t r a d a

A g r a m á t i c a

é

r e p r e s e n t a d a p o r 3 v e t o r e s .

O p r i m e i r o v e t o r contém c a r a c t e r í s t i c a s dos não t e r m i n a i s da g r a m á t i c a . O í n d i c e do v e t o r c o r r e s p o n - de a r e p r e s e n t a ç ã o i n t e r n a u t i l i z a d a p a r a e s t e não t e r m i n a l , o b s e r v a r que o não t e r m i n a l aumentado S ' tem r e p r e s e n t a ç ã o i n t e r n a i g u a l a z e r o . Cada elemen- t o d e s t e v e t o r contém o p a r (no de p r o d u ç õ e s do não t e r m i n a l , p o s i ç ã o da p r i m e i r a produção do não t e r m i - n a l ) ,

O segundo vetar,. contém c a r a c t e r í s t i c a s d a s p r o

-

d u ç õ e s . O í n d i c e do v e t o r c o r r e s p o n d e a r e p r e s e n t a -

Referências

Documentos relacionados

Para exibir as fotos ou os vídeos salvos em um cartão de memória ou na área de fotos &#34;não-favoritas&#34; da memória interna, pressione o botão Review (Rever) para entrar no

Neste artigo, foram analisados os dados precipitação anual para períodos de 1 dia no estado da Paraíba baseado em um fator de freqüência K igual 6.. Baseado nos dados de

A casa parece que é linda, os donos são muito simpáticos e têm coisas giras, originais»... É muito natural que tenha ficado

A gestão financeira voltada para a criação de valor econômico exige o conhecimento detalhado de técnicas gerenciais sofisticadas, que levem em conta o fato de que as

1) O Esquema é um sistema de certificação completo para os sistemas de gestão de segurança de alimentos e alimento animal, que estão em conformidade com os sistemas de gestão

Objetivou-se, neste estudo, avaliar as alterações do BIS de cães durante a estimulação nociceptiva supra-máxima por meio de estímulo elétrico e mecânico e sob

Nem sempre a diferew;a observada entre as respostas, através da aplica(;ão do teste t ou tesLe qui-qua,drado, pode ser atribuída ao fator usado para dividir os pacientes nos dois

As escadas de degrau redondo, não cumpre com as normas de segurança E.N.131. Escadas comercializadas a pedido especial e sob responsabilidade