• Nenhum resultado encontrado

Publicações do PESC Tradutor MICROLOBAN

N/A
N/A
Protected

Academic year: 2021

Share "Publicações do PESC Tradutor MICROLOBAN"

Copied!
125
0
0

Texto

(1)

TRADUTOR MICROLOBAN

S E R G I O HENRIQUE CRIVOROT

T E S E SUBMETIDA AO CORPO DOCENTE DA COORDENAÇÃO DOS PROGRAMAS DE P ~ S - G R A D U A Ç ~ O DE ENGENHARIA DA UNIVER

-

S I D A D E F E D E m L 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 O B T E N Ç ~ O DO GRAU DE MESTRE EM

CIENCIAS

(M.SC. ) A p r o v a d a por: I ESTEVAM G I L R T 0 GE SIMONE

-

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 JUNHO DE 1 9 8 3

(2)

CRIVOROT, S E R G I O HENRIQUE TRADUTOR MICROLOBAN ( R i o d e J a n e i r o , 1 9 8 3 ) V I I , 117 p . 2 9 , 7 c m ( C O P P E - U F R J , M . S c . S i s t e m a s , 1 9 8 3 ) . T e s e

-

U n i v . Fed. R i o de J a n e i r o . Fac. E n g e n h a r i a . 1. TRADUTOR MICROLOBAN. I . C ~ P P E / U F R J . I I . ~ í t u l o ( s é r i e )

(3)
(4)

.

iii.

AGRADECIMENTOS

-

A meu orientador ESTEVAM que, não sei como, me convenceu a

aceitar este trabalho. Agradeço por tudo que aprendi e pe-

la sua atenção constante, mesmo após (infelizmente) ter-se desligado da COPPE.

-

à ESSO BRASILEIRA DE PETR~LEO S.A., que me permitiu cursar

e concluir o Mestrado.

-

à EXXON QU~MICA S.A., em cujo computador o Tradutor MICRO-

LOBAN foi desenvolvido.

-

A meus amigos, pelo estfmulo; especialmente 5 MARIA TERESA,

pelo apoio e carinho.

(5)

Microloban é um s u b c o n j u n t o da linguagem de operação de Banco de Dados Loban, que é s u p o r t a d o p e l o Sistema de ~ e r ê n c i a de Base de Dados Microban.

E s t e t r a b a l h o d e s c r e v e o p r o j e t o e a i r r p l e i e n t a ç ã o d a q u e l e s mó - d u l o s da i n t e r f a c e Loban que s ã o do i n t e r e s s e da á r e a d e p r g c e s s a d o r e s de l i n g u a g e n s . s ã o d e s c r i t o s :

-

o a n a l i s a d o r l é x i c o ;

-

o a n a l i s a d o r s i n t á t i c o d e s c e n d e n t e , d e t e r m i n i s t i c o

,

com um símbolo d e avanço construido a p a r t i r de uma g r a m á t i c a com l a d o s d i r e i t o s r e g u l a r e s a t r a v é s do método RRP L L ( 1 ) ( 5 )

-

um novo t r a d u t o r d i r i g i d o p o r s i n t a x e que u t i l i z a uma g r a m á t i c a de s a í d a gerando á r v o r e s b i n á r i a s e que denominamos d e n d r o - t r a d u t o r R R P .

s ã o d e s c r i t o s a i n d a a maneira de u s a r e s t a implementação e o desenvolvimento de um programa q u e desenha a s á r v o r e s g e r a d a s .

(6)

v

ABSTRACT

Microloban i s a s u b s e t o£ t h e d a t a b a s e o p e r a t i o n l a n g u a g e Loban, p r o v i d e d by t h e Microban D a t a b a s e Management System.

T h i s t h e s i s d e s c r i b e s t h e d e s i g n and development o£ t h e l a n g u a g e p r o c e s s i n g modules:

-

A common l e x i c a l a n a l y s e r ;

-

A top-down d e t e r m i n i s t i c p a r s e r w i t h o n e symbol o£ l o o k - a h e a d , g e n e r a t e d from a r e g u l a r r i g h t p a r t gramrnar u s i n g RRP L L ( 1 ) method. { 5 )

-

A s p e c i a l l y d e v e l o p e d s y n t a x - d i r e c t e d t r a n s l a t o r w i t h a n o u t p u t grammar p r o d u c i n g b i n a r y t r e e s

-

named RRP dendrum

-

t r a n s l a t o r

.

W e d e s c r i b e how t o u s e t h i s Language p r o c e s s o x and a g r a p h i c

-

a1 o u t p u t program which p r i n t s t h e t r a n s l a t e d t r e e s .

(7)

IV.

v.

VI.

VII.

A LINGUAGEM LOBAN

1. Caracterlsticas Principais de Loban 2. Características da Interface Loban

1. Gramáticas LL (1) 2. Gramáticas RRP 3. ãrvores ~ i n á r i a s 4. SDTS 5. Dendro-Tradutor RRP 1. Analisador sintático 2. código Intermediário 3. Funcionamento do SDTS 4, ~ecuperação de Erros

(8)

vii

VIII. CONCLUS~ES

IX. APÊNDICES

1. Tabela de ~radução para o Analisador ~ é x i c o

2. Conjuntos First e Follow dos não terminais

3. salda do Codificador

-

Gramática em forma de ex-

pressão regular

4. salda do Alterador

-

Gramática em forma de AFD

5. Arvores de código

6. Gramática em forma de AFD com as árvores de códi-

40

(9)

Microban é um s i s t e m a de g e r ê n c i a de b a s e de dados i n t e r a t i v o ou

p a r a processamento em l o t e s , a u t o c o n t i d o e monousuário, e que s u

-

p o r t a u m subconjunto da linguagem de operação d e banco d e dados

~ o b a n (1). E s t e subcon j u n t o , denominado Microloban, é composto de

comandos de d e f i n i ç ã o , g e r g n c i a e manipulação d e b a s e de dados,

além dos de e n t r a d a e s a l d a dos dados.

A F i g u r a 1.1, na p á g i n a 2 , m o s t r a a a r q u i t e t u r a g e r a l do s i s t e m a .

E s t e t r a b a l h o d e s c r e v e a implementação do t r a d u t o r e s e u s m8du

-

10s componentes. O o b j e t i v o p r i n c i p a l f o i d i s c u t i r a s i d é i a s p o r

t r á s da implementação, o s caminhos que levaram

5

forma r e s u l t a n -

t e , o s a s p e c t o s t e Õ r i c o s e n v o l v i d o s em cada mÓdulo. Evjrtou-se e n

-

t r a r demasiadamente em d e t a l h e s do programa, muito m a i s adequa

-

dos em um r e l a t ó r i o t é c n i c o do que p o s s i v e l m e n t e f i c a r i a m e m uma t e s e de mestrado.

f

O c a p í t u l o I1 t r a z uma b r e v e

histeria

do p r o j e t o Miniban, d e s d e

o s e u i n i c i o a t é o envolvimento do a u t o r d e s t e t r a b a l h o . P r e t e n - de-se e s c l a r e c e r o l e i t o r a r e s p e i t o do s i g n i f i c a d o d e s t a imple- mentação com r e l a ç ã o a o p r o j e t o como um todo.

O c a p í t u l o I11 d e s c r e v e s u c i n t a m e n t e a s p r i n c i p a i s c a r a c t e r z s t i -

c a s da linguagem d e operação d e banco de dados, Loban, e da i n

-

t e r f a c e Microloban.

Na p r i m e i r a p a r t e do c a p x t u l o s ã o d e f i n i d o s o s c o n c e i t o s i n t r o

-

d u z i d o s p e l a linguagem, i s t o 5 , o s c o n c e i t o s com o s q u a i s um usu

-

á r i o do s i s t e m a de g e r ê n c i a d e banco d e dados t e r 5 de se f a m i l i a

-

r i z a r .

Na segunda p a r t e s ã o l i s t a d o s a l g u n s t i p o s p r e - d e f i n i d o s em M i

-

(10)

I N T E R A T I V O

I

B

L O T E S MONITOR DE TRADUTOR L I N E A - I N T E R P R E T A D O R

+

Fig.

1.1

Arquitetura Geral

do Sistema

\L R E G I S T R A D O R E S I \L EXECUTOR I

I

I MICROLOBAN I D E C O D I F I C A D O R I

i

I 1 I

f

I . . . a

-v

n

i

I

I I V PRIMITIVAS DE A

-

P R I F í I T W DE A

-

PRIJ'IITIVAS DE EN CESSO B.D,AUX, Z. I CESSO A ARQ. EXC. TRADA E &DA-

(11)

No c a p i t u l o I V é d e s c r i t o o a n a l i s a d o r l é x i c o , modelado a t r a v é s

de um t r a n s d u t o r f i n i t o , que t r a d u z o programa f o n t e p a r a uma

s e q u ê n c i a de unidades s i n t á t i c a s que s e r v i r á d e e n t r a d a p a r a o a n a l i s a d o r s i n t á t i c o .

O c a p í t u l o V forma, juntamente com o c a p í t u l o V I , o c o r a ç ã o do

t r a b a l h o . No c a p i t u l o V é e s t a b e l e c i d a a b a s e t e ó r i c a n e c e s s á r i a p a r a a d e s c r i ç ã o do d e n d r o - t r a d u t o r RRP. O s c o n c e i t o s vão sendo i n t r o - d u z i d o s um a um, e no d e s e n r o l a r do ~ a p í t u l o vão s e i n t e m e l a - cionando

.

A s g r a m á t i c a s LL (1) s ã o a p r e s e n t a d a s . Apresenta-se e n t ã o a s g r a m á t i c a s RRP, a t é s e c h e g a r

ãs

RRP L L ( l ) , p a r a a s q u a i s s e c o n s t r o i um a n a l i s a d o r s i n t á t i c o . A s e g u i r d e f i n e - s e á r v o r e s b i

-

n á r i a s e s u a s p o s s í v e i s r e p r e s e n t a ç õ e s . Depois, o esquema d e t r a d u ç ã o d i r i g i d o p e l a s i n t a x e mostra a maneira de s e r e a l i z a r

a g e r a ç ã o d e código simultaneamente com a a n á l i s e s i n t á t i c a . F i

-

nalmente, t o d a s a s i d é i a s s ã o f u n d i d a s p a r a o modelo de um SDTS,

com g r a m á t i c a s d e e n t r a d a RRP L L ( l ) , que e m i t e á r v o r e s b i n á r i a s

na s a í d a .

No c a p i t u l o V I a t e o r i a é c o l o c a d a em p r a t i c a nas s e g u i n t e s e t a

-

pas: a r e p r e s e n t a ç ã o do Microloban a t r a v é s de uma g r a m á t i c a R R P

L L ( 1 ) e a implementação de s e u a n a l i s a d o r s i n t á t i c o ; a d e f i n i ç ã o do código i n t e r m e d i á r i o a s e r gerado p a r a o i n t e r p r e t a d o r Micro-

l o b a n , em forma de á r v o r e b i n á r i a l i n e a r i z a d a ; e a implementa

-

$50 do SDTS que o g e r a . Aborda-se a i n d a a e s t r a t ê g i a de recupe-

r a ç ã o de e r r o s u t i l i z a d a .

O c a p í t u l o VI1 m o s t r a exemplos da u t i l i z a ç ã o do t r a d u t o r , i n c l u -

s i v e p a r a f i n s d i d á t i c o s , conjugado com o programa que desenha

-

á r v o r e s , que p e r m i t e uma r e p r e s e n t a ç ã o g r á f i c a do código i n t e r

-

m e d i á r i o gerado p e l o t r a d u t o r Microloban.

(12)

O P r o j e t o Miniban

-

p r o j e t o de um s i s t e m a de banco de dados e m

minicomputador Nacional

-

começou a s e r d e s e n v o l v i d o no ano de

1977 como r e s u l t a d o de um convênio e n t r e o CNPQ, GMD da Repúbli

-

c a F e d e r a l da Alemanha, D i g i b r a s e a UFRGS.

Miniban tem como o b j e t i v o a e s p e c i f i c a ç ã o de um s i s t e m a de banco d e dados p a r a um Minicomputador n a c i o n a l , a s s i m como o desenvol-

vimento de t e c n o l o g i a n a c i o n a l na S r e a de banco de dados. A p r i -

meira e t a p a do p r o j e t o Miniban concentrou-se na e s p e c i f i c a ç ã o

-

das e s t r u t u r a s de informação, as operações usando e s t a s e s t r u t u -

r a s , assim como a d e f i n i ç ã o da linguagem de o p e r a ç ã o de banco de

dados Loban. A p r i m e i r a implementação de um s u b c o n j u n t o Loban,

-

denominado Sistema L , e s t á sendo desenvo2vido p e l a UFRGS. A par-

t i r d e o u t u b r o d e 1978 a COPPE/UFRJ i n i c i o u s u a p a r t i c i p a ç ã o n e s

-

t e p r o j e t o , dando origem a o projetosMiniban/COPPE.

A f a s e i n i c i a l do p r o j e t o Miniban/COPPE c o n s i s t i u da d e f i n i ç ã o

-

d e t a l h a d a de Loban, com a p r i n c i p a l c a r a c t e r i s t i c a de s e p a r a r n i

-

t i d a m e n t e a e t a p a d e d e f i n i ç ã o da i n t e r f a c e usu&do/banco d e da-

d o s , d a e t a p a de r e a l i z a ç ã o ou implementação da mesma em um sis-

tema por t a d o r .

Devido

2

e x t e n s ã o e extrema complexidade da i n t e r f a c e a s s i m d e

-

f i n i d a , e ao d e s e j o de a d a p t a r Loban a um computador de pequeno- p o r t e , a e q u i p e do p r o j e t o Miniban/COPIPE o p t o u , como segunda e t a

pa do p r o j e t o (denominado Microban), p e l o desenvolvimento d e um

p r o t 6 t i p o capaz de s u p o r t a r um s u b c o n j u n t o Loban.

O s i s t e m a p o r t a d o r e s c o l h i d o f o i o Cobra-300 p o r ser uma máquina

n a c i o n a l e p e l a n e c e s s i d a d e de desenvolvimento d e s o f t w a r e p a r a s i s t e m a s d e s t e p o r t e .

O s u b c o n j u n t o Loban d e f i n i d o p a r a a implementação do p r i m e i r o

-

p r o t ó t i p o é denominado Microloban.

A p r i m e i r a e t a p a da implementaçao d e s t e p r o t ó t i p o 6 o d e s e n v o l

-

vimento dos mÓdulos de a n á l i s e l s x i c a e s i n t s t i c a e do t r a d u t o r - p a r a código i n t e r m e d i á r i o .

(13)

E s t a s e t a p a s s ã o t a r e f a s a serem e x e c u t a d a s p o r p e s s o a l que t e

-

nha como p r i n c i p a i s á r e a s de i n t e r e s s e l i n g u a g e n s de programação

e o desenvolvimento de compiladores; e como á r e a s e c u n d á r i a , ban

-

co de dados,

E s t e 6 o c a s o do a u t o r , que não p e r t e n c e

5

e q u i p e do p r o j e t o M i -

niban/COPPE. O t r a b a l h o , nominalmente, f o i i n i c i a d o em 1981 m a s

t o d o e s t e ano e a p r i m e i r a metade d e 1982 foram g a s t o s a i n d a na

d e f i n i ç ã o do s u b c o n j u n t o a s e r implementado. Pouco f o i e f e t i v a

-

mente f e i t o no desenvolvimento do a n a l i s a d o r e t r a d u t o r . O e s f o r

-

ço maior f o i , p o r t a n t o , d e s e n v o l v i d o d u r a n t e o segundo s e m e s t r e - d e 1982 e o p r i m e i r o s e m e s t r e d e 1983.

Provavelmente, do ponto de v i s t a d e banco de dados, e s t e t r a b a

-

l h o padece de a l g u n s males causados p e l o s e u desenvolvimento qug

s e que t o t a l m e n t e em s e p a r a d o da e q u i p e do p r o j e t o . N ~ O

6

e s t e o

método que o a u t o r recomenda a ninguém.

Como s e t r a t a de um c o n j u n t o de m8dulos e não da implementação

-

t o t a l do Microloban, o a u t o r t e v e o cuidado de e s c r e v e r um p r o

-

grama d e desenho de S r v o r e s que p e r m i t e a f s c i l l e i t u r a da s a í d a do t r a d u t o r , p a r a a u x i l i a r no desenvolvimento d e e t a p a s p o s t e r i o r e s e , e v e n t u a l m e n t e , no e n s i n o d e Loban.

Espera-se que o t r a d u t o r venha e f e t i v a m e n t e a ser u t i l i z a d o por

se t r a t a r d e uma pequena p a r t e do grande e s f o r ç o que deve ser d e

-

(14)

111. A LINGUAGEM LOBAN

E s t e c a p i t u l o tem como b a s e a r e f e r ê n c i a (21, da q u a l o a u t o r 6

um dos c o - a u t o r e s . P a r a um e s t u d o d e t a l h a d o do Loban, no e n t a n - t o , recomenda-se (11.

1. CARACTERÍSTICAS PRINCIPAIS DE L O B W

A linguagem d e o p e r a ç ã o de banco de dados (Loban) é uma l i n g u a -

gem a u t o c o n t i d a que engloba comandos d e def i n i ç g o

,

manipulação-

e g e r ê n c i a de dados, c o n t r o l e de a c e s s o , p r o v i d ê n c i a s d e r e c o n s

-

t r u ç ã o , t r a t a m e n t o d e e r r o s e d e f i n i ç ã o de t r a n s a ç õ e s , a l é m de

f a c i l i d a d e s o f e r e c i d a s p e l a s l i n g u a g e n s c o n v e n c i o n a i s como d e f i n i ç ã o de macros, comandos i t e r a t i v o s , c o n d i c i o n a i s e de e n t r a d a e s a i d a de dados.

O desenvolvimento de Loban e s t á baseado em c o n c e i t o s IMC ( " I n

-

f o r m a t i o n Management C o n c e p t s " ) , c u j a p r i n c i p a l c a r a c t e r z s t i c a -

é a d i s t i n ç ã o e n t r e ( c o n s t r u ç ã o d e ) informação (comumente deno-

minado " v a l o r " ou "conteúdo" de uma v a r i á v e l ) e s u a o c o r r ê n c i a -

d e n t r o de um determinado c o n t e x t o (conhecido como "nome de v a

-

r i á v e l " ou " e n d e r e ç o de uma v a r i á v e l " ) .

O c o n c e i t o de c o n s t r u ç ã o de informação ou simplesmente c o n s t r u -

ç ã o , d e f i n e q u a l q u e r "pedaço de informação" que p o s s a ser r e f e -

r e n c i a d o p o r uma i n t e r f a c e de g e r ê n c i a de b a s e d e dados. Uma

c o n s t r u ç ã o é c o n s i d e r a d a e l e m e n t a r (ftem) s e e l a não 5 composta

de o u t r a s construçÕes, em o p o s i ç ã o a um agregado que é formado

p o r v á r i a s c o n s t r u ç õ e s chamadas "componentes i m e d i a t o s " . Caso

o s componentes i m e d i a t o s de um agregado possuam nomes, e s t e e

denominado nominação; c a s o c o n t r á r i o , e l e

6

uma c o l e ç ã o .

Na abordagem r e l a c i o n a l , a e s t r u t u r a b ã s i c a

6

a nominação de

i t e n s

-

TUPLA. Um c o l e t i v o d e Tuplas (com o mesmo c o n j u n t o de

nomes) forma uma t a b e l a r e l a c i o n a 1 (conhecida na l i t e r a t u r a co-

(15)

Na abordagem em r e d e s é formada uma unidade d e informação, ou

s e j a , uma c o n s t r u ç ã o l i g a n d o um r e g i s t r o chamado "owner" a um

c o n j u n t o de r e g i s t r o s chamados "members". Em Loban e s t e t i p o d e

c o n s t r u ç ã o é denominado l i g a ç ã o , que é uma nominação de 2 e l e -

mentos: uma t u p l a sob nome L e uma t a b e l a r e l a c i o n a 1 s o b nome T .

Um c o l e t i v o de l i g a ç õ e s forma uma t a b e l a l i g a c i o n a l ( " s e t " em

Codasyl)

.

Um a r q u i v o em Loban é uma nominação s o b r e uma t a b e l a e uma cons

-

t r u ç ã o sob nome f i c h a , que contém informações como d a t a d e c r i a

-

Ç ~ O , a t u a l i z a ç ã o , e t c . Dependendo do t i p o de t a b e l a componente,

o a r q u i v o s e r á r e l a c i o n a 1 ou l i g a c i o n a l .

Opcionalmente, Loban p e r m i t e d e f i n i r uma ou mais o r d e n a ç c e s so-

b r e a t a b e l a de um a r q u i v o . O agrupamento de a r q u i v o s c o n s t i

-

t u i o a c e r v o de t r a b a l h o (ACTRAB) q u e , juntamente com a s cons

-

t r u ç õ e s usadas p a r a p r o v i d g n c i a s d e r e c o n s t r u ç ã o , formam o

a c e r v o s e t o r i a l (ACSET) que s e r á o ambiente de t r a b a l h o p a r a

uma determinada a p l i c a ç ã o . Cada a c e r v o s e t o r i a l tem a s s o c i a d o a e l e um nome, e o c o n j u n t o de t o d o s o s , a c e r v o s s e t o r i a i s forma o

a c e r v o t o t a l ( b a s e d e d a d o s ) , que 6 a c o n s t r u ç ã o mais abrangen-

t e s u p o r t a d a p o r Loban.

P a r a r e f e r e n c i a r c o n s t r u ç 6 e s , Loban u t i l i z a e x p r e s s 6 e s denomi

-

nadas endereços de p o n t o s , que l o c a l i z a m construçÔes d e n t r o d e

um determinado c o n t e x t o . Em g e r a l , um e n d e r e ç o de ponto é uma

seqfiência de e x p r e s s õ e s b o o l e a n a s , s e p a r a d a s p e l o c a r a c t e r pon-

t o (.)

,

que a v a l i a d a s num determlnado n í v e l de um agregado de

-

terminam o s componentes i m e d i a t o s que s ã o s e l e c i o n a d o s ( r e f e

-

r e n d a d o s ) . P a r a que um componente i m e d i a t o de um agregado s e j a

s e l e c i o n a d o , a e x p r e s s ã o booleana c o r r e s p o n d e n t e d e v e r á r e s u l

-

t a r no v a l o r " v e r d a d e i r o " .

Um r e c u r s o i m p o r t a n t e s u p o r t a d o p o r Loban

6

a marcação de pon

-

t o s , i s t o é, d e p o i s de t e r endereçado p o n t o s na b a s e d e dados o

u s u á r i o pode marcar estes p o n t o s , a t r i b u i n d o - l h e s um nome, de-

(16)

p e r m i t i r r e f e r e n c i a r e s t e s p o n t o s (em o u t r o s l u g a r e s ) a t r a v é s

do nome d a marca, sem a n e c e s s i d a d e de r e a v a l i a r o e n d e r e ç o de

p o n t o que o s s e l e c i o n o u .

O termo p r e t i p o , em Loban, é usado p a r a a l g u n s t i p o s de cons

-

t r u ç õ e s previamente d e f i n i d o s na linguagem, como p o r exemplo: r e a l , i n t e i r o , t u p l a , t a b e l a , e t c . Todo u s u á r i o tem a p o s s i b i - l i d a d e de d e f i n i r o s s e u s " p r 6 p r i o s " t i p o s de c o n s t r u ç õ e s . To- da d e f i n i ç ã o de um t i p o de c o n s t r u ç ã o é f e i t a a t r a v é s d e v e r

-

b e t e s d e c o e r ê n c i a , que, e m g e r a l , c o n s t i t u e m a d e f i n i ç ã o ;das r e g r a s de c o n s i s t ê n c i a da b a s e d e dados. ~ l é m dos v e r b e t e s d e c o e r ê n c i a , e x i s t e m em Loban v e r b e t e s de u s u á r i o ( p a r a i d e n t i f i c a r o s u s u á r i o s do s i s t e m a ) , v e r b e t e s d e a c e s s o ( p a r a r e g u l a m e n t a r o s a c e s s o s a b a s e de dados p e l o s d i - f e r e n t e s u s u á r i o s ) , e n t r e o u t r o s . Todos e s t e s v e r b e t e s s ã s

agrupados numa c o n s t r u ç ã o denominada f o l h a ( s e m e l h a n t e ao

"schema" da Codasyl)

.

Todo u s u á r i o Loban p o s s u i uma á r e a de t r a b a l h o denominada ca-

n a l a u x i l i a r , que f u n c i o n a como uma b a s e de dados p a r t i c u l a r e

t e m p o r á r i a , na q u a l e l e pode armazenar, manipular e r e f e r e n c i - a r c o n s t r u ç õ e s l i v r e m e n t e .

Em g e r a l , t o d o s o s r e s u l t a d o s i n t e r m e d i s r i o s d a s o p e r a ç õ e s s ã o

o b t i d o s na zona i n t e r m e d i á r i a , c u j o contefido é p e r d i d o após a

(17)

Microloban é uma i n t e r f a c e c u j a e s p e c i f i c a ç ã o f o i r e a l i z a d a sem

a preocupação de como s u a s e s t r u t u r a s s e r i a m r e p r e s e n t a d a s i n

-

t e r n a m e n t e na máquina e s c o l h i d a p a r a implementação. E s t a s e p a r a

-

ção deu maior l i b e r d a d e de implementação, p o i s pode-se e s c o l h e r

d e n t r e um maior número de a l t e r n a t i v a s , q u a l a s o l u ç ã o mais v i s

-

v e l q u a n t o a r e a l i z a ç ã o no s i s t e m a p o r t a d o r .

Suas e s t r u t u r a s de informação fazem com que s e t e n h a uma v i s ã o

g l o b a l da informação, e a s o p e r a ç 8 e s s o b r e e s t a s resolvem a

m a i o r i a dos problemas de t r a t a m e n t o da informação na á r e a d e

banco d e dados. Tentou-se d a r na s u a d e f i n i ç g o a p o s s i b i l i d a d e - de f u t u r a s e x t e n s õ e s sem m o d i f i c a r s u a s funções o r i g i n a i s .

Por ser uma i n t e r f a c e p o d e r o s a , a p r o p o s t a i n i c i a l

6

que s u a d e

-

f i n i ç ã o e implementaçzo s e p r e s t e como uma f e r r a m e n t a d e e n s i n o

na á r e a de banco d e dados, e que f u n c i o n e como um s i s t e m a d e r e

-

f e r ê n c i a na comparação d a s d i v e r s a s abordagens.

Microloban 6 uma linguagem a u t o c o n t i d a , em p o r t u g u & , que e n g l o

-

ba d i v e r s a s f u n ç õ e s , d e n t r e a s q u a i s e s t s o a s que descrevem a

informação e s e u r e l a c i o n a m e n t o e as e s t r u t u r a s da b a s e de da

-

dos ( D D L )

,

a s funções de manipulação e uso da b a s e d e dados

-

( D M L ) , e funções normalmente r e a l i z a d a s p o r u t i l i t á r i o s do SGBD,

como r e c o n s t r u ç ã o d e a c e r v o s , modificaç6es das d e f i n i ç õ e s dos

dados, e t c .

O p r i n c i p a l c r i t é r i o adaptado na d e f i n i ç g o do s u b e o n j u n t o que

compõe microloban f o i o de r e d u z i r a complexidade d e Loban a

um n i v e l a c e i t á v e l no s i s t e m a p o r t a d o r , porém mantendo a s u a

f i l o s o f i a b á s i c a .

A comunicação do u s u á r i o com o s i s t e m a de banco d e dados & f e i -

t a u t i l i z a n d o uma i n s t r u ç ã o de t r a b a l h o , a q u a l c o r r e s p o n d e a

r e a l i z a ç ã o de um s e r v i ç o . Uma i n s t r u ç ã o de t r a b a l h o

6 constitui

-

(18)

mas e uma i n s t r u ç ã o d e f i m . E s t a i n s t r u ç g o de i n l c i o d e t e r m i n a

s e o processamento s e r á i n t e r a t i v o ou em l o t e s . O s dados a s e -

rem p r o c e s s a d o s s e r ã o f o r n e c i d o s ou j u n t o com a s i n s t r u ç õ e s co- mo anexos, ou s e p a r a d o s em a r q u i v o s e x t e r n o s . Como r e s p o s t a s ã o

f o r n e c i d o s o r e s u l t a d o e x t e r n o ( e x . : r e l a t ó r i o s ) , e o i n t e r n o

-

que é guardado como uma b a s e de dados c a s o tenham s i d o f e i t a s

a l t e r a ç õ e s s o b r e a mesma. s e r ã o também f o r n e c i d a s mensagens ope

-

r a c i o n a i s p a d r o n i z a d a s informando a s o c o r r ê n c i a s d u r a n t e o pro- cessamento.

No que d i z r e s p e i t o a e n t r a d a / s a í d a d e dados, s e r á u t i l i z a d a uma

ú n i c a máscara ( f o r m a t o ) padrão p r e d e f i n i d a e v á r i a s r e g r a s d e

i n t e r p r e t a ç ã o e r e p r e s e n t a ç ã o , r e s p e c t i v a m e n t e .

Microloban p e r m i t e a l g u n s dos pretipos &l;oban, e n t r e o s q u a i s po

-

demos c i t a r :

-

P r e t i p o s atômicos: r e a l , i n t e i r o ;

-

P r e t i p o s agregados b á s i c o s : numeraçao d e c a r a c t e r e s , d a t a , h o r a , t u p l a , l i g a ç ã o , c o l e ç g o de f t e n s , t a b e l a s r e l a c i o n a i s e l i g a c i o n a i s ;

-

F o l h a , que c o n t e r á :

-

~ e s c r i ç ã o dos t i p o s de c o n s t r u ç ã o que compõem a b a s e de da-

dos ( v e r b e t e s de c o e r ê n c i a )

-

~ u t o r i z a ç õ e s p e r m i t i d a s ( v e r b e t e s de a c e s s o )

-

1 d e n t i f i c a ç ã o de u s u á r i o s ( v e r b e t e d e u s u á r i o )

-

Procedimentos p r e - d e f i n i d o s ( v e r b e t e de t e x t o f o n t e )

-

Arquivo, composto d e um t i p o de c o n s t r u ç ~ o p a d r a o chamado f i -

cha e uma t a b e l a . Sendo assim, e x i s t e m a r q u i v o s r e l a c i o n a i s e

l i g a c i o n a i s . Uma r e s t r i ç ã o f e i t a em Microloban é a e l i m i n a ç a o

das r e l a ç õ e s d e ordem t a n t o dos a r q u i v o s q u a n t o d a s l i g a ç õ e s .

-

F i c h a , contendo informações r e f e r e n t e s ao a r q u i v o ou a c e r v o

-

s e t o r i a l t a i s como: d a t a de c r i a ç a o , d a t a da G l t i m a a t u a l i z a -

(19)

-

ACTRAB ( a c e r v o d e t r a b a l h o )

-

ACSET ( a c e r v o s e t o r i a l )

-

ACTOT ( a c e r v o t o t a l )

Microloban p e r m i t e o s s e g u i n t e s comandos:

-

Comandos de g e r g n c i a , onde o u s u â r i o tem a p o s s i b i l i d a d e de

c r i a r e a b o l i r t a n t o a c e r v o s s e t o r i a i s q u a n t o a r q u i v o s .

-

Comandos de manipulação, que permitem i n c l u i r , e x c l u i r e subs-

t i t u i r construçÕes t a n t o na b a s e de dados q u a n t o no c a n a l au- x i l i a r .

-

Comandos d e c o n t r o l e d e f l u x o , que permitem a execução r e p e

-

t i t i v a e l ó u c o n d i c i o n a l

.

O comando i t e r a t i v o p e r m i t e a e s p e c i f i c a ç ã o de uma ordenação t e m p o r ã r i a s o b r e o c o n j u n t o de p o n t o s a serem p r o c e s s a d o s .

-

Comandos d e a l o c a ç ã o d e r e c u r s o s com o s q u a i s o u s u á r i o i n -

forma a b a s e de dados a s e r u s a d a , a s s i m como o s d i s p o s i t i v o s

de e n t r a d a / s a l d a n e c e s s á r i o s .

alêm

d e d e f i n i r q u a l a b a s e de

dados r e q u i s i t a d a , o usu&io d e v e r á e s p e c i f i c a r a ã r e a d e da-

dos a s e r usada ( p r o t e g i d a ) e p a r a que t i p o de a c e s s o .

-

Comandos d e marcação, que permitem a d e f i n i ç ã o d e "snapshots",

e não de v i s t a s como é o caso d e Loban.

-

Comandos de r e c o n s t r u ç ã o . s ã o p e r m i t i d o s d o i s n í v e i s d e re-

c o n s t r u ç ã o : de s e s s ã o ( d e t i p o r e g r e s s i v a ) e de comandos den- t r o de uma s e s s ã o ( t a n t o p r o g r e s s i v a q u a n t o r e g r e s s i v a ) .

-

Comando de s a í d a que p e r m i t e r e p r e s e n t a r c o n s t r u ç õ e s no m&

(20)

-

Comando de d e f i n i ç ã o d e t r a n s a ç s o , que p e r m i t e r e p r e s e n t a r

-

c o n j u n t o d e comandos c u j a execução s e r á c o n s i d e r a d a como

uma unidade de processamento. No i n í c i o da t r a n s a ç ã o s ã o es

-

p e c i f i c a d a s a s a ç õ e s que s e r ã o e x e c u t a d a s quando da o c o r r g n

-

c i a d e ê r r o s de execução.

~ l é m dos comandos acima d e s c r i t o s temos a s e x p r e s s c e s que quan-

do e x e c u t a d a s geram c o n s t r u ç õ e s na zOna i n t e r m e d i á r i a (%ea de

t r a b a l h o ) . E s t a s e x p r e s s õ e s nzo t ê m r e s t r i ç õ e s q u a n t o a o n í v e l -

d e embutimento e englobam a s s e g u i n t e s funções:

-

E n t r a d a d e dados

-

o p e r a ç õ e s a r i t m é t i c a s

-

o p e r a ç õ e s da á l g e b r a r e l a c i o n a l

-

o p e r a ç õ e s do c â l c u l o r e l a c i o n a l

-

o p e r a ç õ e s s o b r e t a b e l a s r e l a c i o n a i s e l i g a c i o n a i s Microloban não p e r m i t e o p e r a ç õ e s s o b r e c a d e i a s d e c a r a c t e r e s ,

-

p r o d u t o e concatenação c a r t e s i a n a .

Por Último, temos a s e x p r e s s õ e s que permitem o endereçamento de p o n t o s do a c e r v o ou c a n a l a u x i l i a r , e campos dos volumes d e en- t r a d a e s a l d a .

(21)

IV. O desenho de um a n a l i s a d o r l é x i c o e f i c i e n t e

6

t a r e f a s i m p l e s . F a r t a t e o r i a a r e s p e i t o pode s e r e n c o n t r a d a em ( 6 ) e (81, que s ã o as r e f e r h c i a s p a r a t o d o o c a p í t u l o . A n o t a ç ã o u s a d a

6

a de ( 6 1 . A função do a n a l i s a d o x l é x i c o

6

g r u p a r seqfI6ncias d e c a r a c t e r e s t e r m i n a i s em e n t i d a d e s s i n t á t i c a s p r i m i t i v a s , c o n h e c i d a s como

-

"Tokens". O que v a i c o n s t i t u i r ou não uma e n t i d a d e s i n t á t i c a em

uma dada implementação, embora s e t r a t e de uma d e c i s z o do p r o j e

-

t i s t a ,

é

fundamentalmente i n f l u e n c i a d o p e l a e s p e c i f i c a ç ã o da

linguagem.

A cada s e q ü ê n c i a d e simbolos t e r m i n a i s grupados, a s s o c i a - s e uma

e s t r u t u r a l é x i c a c o n s i s t i n d o de um p a r da forma ( t i p o , v a l o r ) . O

p r i m e i r o componente é um t i p o d e e n t i d a d e s i n t s t i c a , t a l como

" i d e n t i f i c a d o r " , e o segundo componente f o r n e c e i n f o r m a ç õ e s que i n d i v i d u a l i z a m um elemento d e n t r o do c o n j u n t o de s e q ü ê n c i a s de símbolos que pertencem a o mesmo t i p o .

O p r i m e i r o componente do p a r é usado p e l o a n a l i s a d o r s i n t s t i c o ,

enquanto que o segundo usado d u r a n t e a f a s e de g e r a ç ã o d e c8-

d i g o .

A s s i m , o a n a l i s a d o r l é x i c o

6

um t r a d u t o r c u j a e n t r a d a é uma se- qfIência d e símbolos r e p r e s e n t a n d o o programa f o n t e e c u j a s a í d a

6

uma s e q a g n c i a de entidades s i n t á t i c a s p r i m i t i v a s . E s t a s a í d a

forma a e n t r a d a do a n a l i s a d o r s i n t z t i c o .

A melhor r e p r e s e n t a ç ã o p a r a as e n t i d a d e s s i n t á t i c a s r e c o n h e c i

-

(22)

U m a e x p r e s s ã o r e g u l a r ( E R ) e o c o n j u n t o de seqçiências s o b r e o a l - f a b e t o C que d e n o t a s ã o d e f i n i d a s como: (1) $3 é uma ER e d e n o t a o c o n j u n t o v a z i o ; ( 2 )

a

p e r t e n c e n t e a C é uma E R e d e n o t a o c o n j u n t o

ia

1

; ( 3 ) Se P e q s ã o E R ' s denotando o s c o n j u n t o s P e Q , e n t ã o : ( p t q ) é ER e d e n o t a P U Q ; ( p q ) é ER e d e n o t a P Q ; ( p )

*

é ER e d e n o t a P?:; ( 4 ) Nada m a i s é ER.

O s p a r ê n t e s e s r e d u n d a n t e s podem s e r removidos obedecida a prece- d ê n c i a : fechamento, a l $ e r n a ç ã o , concatenaçao.

s ã o a c e i t a s também a b r e v i a t u r a s , com a mesma p r e c e d ê n c i a que o

fechamento:

(1) p? denotando, P U

1;

( 2 ) p + d e n o t a n d o PP*;

( 3 ) p E q denotandoP(QP)

*.

N a p á g i n a 1 5 , a f i g u r a I V . l mostra algumas das e n t i d a d e s s i n t s

-

t i c a s r e c o n h e c i d a s eni Microloban. s ã o mostrados : a r e p r e s e n t a ç ã o

e x t e r n a em forma de e x p r e s s ã o r e g u l a r e o p a r a s s o c i a d o ( t i p o d e

e n t i d a d e , v a l o r ) . A t a b e l a de t r a d u ç ã o completa com t o d a s a s en-

t i d a d e s s i n t á t i c a s e s t á no a p ê n d i c e 1.

A r e p r e s e n t a ç ã o e x t e r n a e s t á e m forma de expressgo r e g u l a r s o b r e

o a l f a b e t o formado p o r t o d o s o s c a r a c t e r e s v á l i d o s no Cobra 300:

A s o u t r a s e n t i d a d e s com a mesma l e i d e formaçao que o s i d e n t i f i -

c a d o r e s s ã o a s p a l a v r a s r e s e r v a d a s do Microloban, i s t o é, i d e n

-

(23)

.15. F I G U R A I V . 1

-

P a r t e da t a b e l a de t r a d u ç ã o do a n a l i s a d o r l é x i c o ASPAS C* ASPAS " A " li

c

11 11 AO 11 li C C I I i f P C ' l I' COM" li REC " " SOBRE " 1f ALTERAR" " E X C L U I R " " C O L I T E N S " "COMPILAR" "GERENCIAR" %EPRESENTAR" l l ~ ~ ~ ~ ~ ~ Ê ~ ~ ~ ~ l r "TELE IMPRESSORA" T I P O VALOR PONTO-E-VÍRGULA

vf

RGULA PONTO MENOR MAIOR DOIS-PONTOS FECHA-PARENTESES ABRE-PARENTESE S D I F E R E N T E MENOR-OU-IGUAL MAIOR-OU-IGUAL ATRIBUIÇÃO IDENTTFICADOR REPRESENT-EXTERNA I N T E T R O REPRESENT. EXTERNA

REAL REPRESENT

.

EXTERNA

DATA R E P R E S E N T . EXTERNA

HORA REPRESENT. EXTERNA

NUMCAR REPRESENT.EXTERNA A C AO CC P C COM REC S OBRE ALTERAR E X C L U I R C O L I T E N S COMPILAR GERENCTAR REPRESENTAR

ALFANUMERICO

TELEIMPRESSORA

(24)

A d e c i s ã o do que é um t o k e n depende não s Ô d a linguagem, mas tam- bém do p r o j e t i s t a do a n a l i s a d o r . Por exemplo, poder-se-ia t e r op- t a d o p o r não c o n s i d e r a r a e x i s t ê n c i a de um token do t i p o l i t e r a l

d a t a , mas s i m c o n s i d e r a r uma seqf!&ncia de c i n c o t o k e n s : i n t e i r o

-

p o n t o - i n t e i r o - p o n t o - i n t e i r o . s i m p l i f i c a ç õ e s como e s t a l e v a r i a m a

um a n a l i s a d o r l é x i c o mais s i m p l e s , mas ao c u s t o de t r a n s f e r i r o

reconhecimento de um l i t e r a l - d a t a p a r a a f a s e d e a n á l i s e s i n t á t i -

c a . E s t e enfoque, no e n t a n t o , ê b a s t a n t e d i s c u t i v e l . F o i s e g u i d a a

o r i e n t a ç ã o segundo a q u a l é melhor complicar-se o a n a l i s a d o r 16

-

x i c o , p a r a s i m p l i f i c a r o a n a l i s a d o r s i n t á t i c o . A l i s t a de1'tokens",

mostrada acima, é a q u e l a que julgou-se e s t a r m a i s próxima da e s

-

t r u t u r a do Loban, como d e f i n i d a p e l o u s u â r i o .

Sempre que o a n a l i s a d o r s i n t á t i c o p r e c i s a de uma nova entidade s i n

-

t á t i c a , o a n a l i s a d o r l é x i c o é chamado, sendo, p o r t a n t o , uma sub-

r o t i n a do a n a l i s a d o r s i n t â t i c o . O a n a l i s a d o r l&d.co s ó r e t o r n a r á .

o controle ao a n a l i s a d o r s i n t á t i c o (com exceção do c a s o d e f i m de ,

a r q u i v o ) após r e c o n h e c e r uma e n t i d a d e s i n t á t i c a v á l i d a p a r a s e u uso. Caso c o n t r á r i o c o n t i n u a r á a n a l i s a n d o o r e g i s t r o l i d o , e n

-

q u a n t o f o r n e c e s s á r i o . O a n a l i s a d o r l é x i c o e s c o l h e r á sempre a mais longa e n t i d a d e s i n t á t i c a p o s s í v e l . Duas d e f i n i ç õ e s s ã o i m p o r t a n t e s p a r a a concepção do a n a l i s a d o r

18

-

x i c o : automato f i n i t o d e t e r m i n z s t i c o e t r a n s d u t o r f i n i t o .

Automato f i n i t o não d e t e r m i n i s t i c o é uma 5-Tupla

M = ( Q , C , & t q o r F ) onde : (1) Q é um c o n j u n t o f i n i t o de e s t a d o s ; ( 2 ) C é um c o n j u n t o f i n i t o d e s h b o l o s ; ( 3 ) 6

,

a função de t r a n s i ç ã o , 8: ( Q x C ) ->Q* ( 4 ) q 0 é o e s t a d o i n i c i a l ; ( 5 ) F

,

que é um s u b c o n j u n t o d e Q , o c o n j u n t o de e s t a d o s f i n a i s .

(25)

Se 6 mapeia (QxC) e m Q d i r e m o s que o autômato é d e t e r m i n f s t i c o

-

(AFD)

.

Como j á f o i e x p o s t o , o a n a l i s a d o r l g x i c o é um t r a d u t o r , que t r a d u z o programa f o n t e p a r a uma s e q u ê n c i a d e e n t i d a d e s s i n t á

-

t i c a s . O t r a d u t o r mais s i m p l e s é o t r a n s d u t o r f i n i t o , usado p o r n ó s . ~ m

t r a n s d u t o r é composto p o r um reconhecedor acoplado a um t r a n s

-

m i s s o r , que e m i t e um c o n j u n t o de símbolos de s a í d a a cada movi-

mento f e i t o , podendo e s t e c o n j u n t o s e r v a z i o . O t r a n s d u t o r f i

-

n i t o é o b t i d o tomando-se um autômato f i n i t o e p e r m i t i n d o a

-

q u i n a e m i t i r um c o n j u n t o d e s h b o l o s de s a i d a em cada movimen

-

t o . A F i g u r a I V . 2 a p r e s e n t a o modelo d e um t r a n s d u t o r f i n i t o . F i t a d e E n t r a d a ( l e i t u r a somente) CONTROLE FINITO F i t a d e s a í d a ( e s c r i t a somente)

Um t r ~ m d u t o r f i n i t o é uma 6-Tupla ( Q , C , A , 6 , q O , F) onde,

(1) Q é um c o n j u n t o f i n i t o d e e s t a d o s ( 2 ) C é um a l f a b e t o d e e n t r a d a ( 3 ) A é um a l f a b e t o de saTda ( 4 ) 6 é uma função de t r a n s i ç ã o 6 : ( Q x

C)->P(Q

x A*) ( 5 ) q o p e r t e n c e a Q , sendo o e s t a d o i n i c i a l ( 6 ) F e s t á c o n t i d o em Q, sendo o c o n j u n t o d e e s t a d o s f i n a i s

(26)

A análise léxica é dita direta quando, dada uma seqfiência de sim

-

bolos de entrada e um ponteiro para aquela seqflência, o analisa- dor determina a qual tipo de entidade sintstica pertence o grupo

de simbolos imediatamente a direita do lugar apontado e move o

ponteiro para a direita daquele grupo de s~mbolos.

A maneira mais eficiente de se implementar um analisador léxico

direto através da busca em paralelo, pois a cada simbolo lido

o número de possibilidades decresce rapidamente.

A estratégia de desenho adotada foi a seguinte:

Para cada tipo de entidade sintática foi desenhado um automato

finito que a reconhecesse. Todos os automatos foram então combi- nados em um só, que foi tornado determinístico e mínimo.

A partir do automato finito determin~stico combinado, obteve-se

um transdutor finito simples que emite na saída o tipo de enti

-

dade sintática reconhecida e, eventualmente, alguma informação

-

particular sobre seu valor.

Cada estado do automato representa estados de vários dos automa-

tos componentes. Quando o automato combinado entra num estado

que contem um estado final de um dos automatos componentes, e

nenhum outro estado, ele para e emite o nome da entidade sintáti

-

ca reconhecida, se não houver novas transições possíveis.

O automato finito deterministico combinado, representado pelo

analisador léxico está na Figura IV.3, na página 19.

Um problema ocorre no caso dos identificadores e das palavras

reservadas. Devido a grande quantidade de identificadores pos-

síveis, usa-se uma definição simplificada (letra seguida de qual

-

quer combinação de letras, digitos e travessões) para o transdu- tor

.

(27)

I ' ; " / P O N T O E

V T R G U L A

Fig.

1 1 3

, " /

VTRGULA

Autômato Finito

0

I ' .

" /

P O N T O

0

I 1 = I1 / I G U A L " { I 1 / A B R E - C H A V E S

0

" I " /

F E C H A C H A V E S

0

i

" L " /

A B R E - C O L C H E T E S

0

I ' ] " / F E C H A - C O L C H E T E S

0

"I

" /

M A R C A

0

" < > I 1 / D I F E R E N T E

0

II < = 11 L

/

M E N O R - I G U A L

" > = " I

M A I O R - I G U A L

0

" > " / M A I O R

0

II

.

.

I 1

/

D O I S P O N T O S

" - " /

M E N O S

0

(28)

1 1 * 1 1

/

V E Z E S

cont. Fig.

I13

I ' ) " d " ) 'I

/

F E C H A - P A R E N T E S E S

0

" ) " / F E C H A - P A R E N T E S E S

0

11 I I ~ I I ( " / AB R E - P A R E N T E S E S " ( " / A B R E - P A R E N T E S E S

0

" # " /

C A R D I N A L

0

1 / d / I 1 l1 -

L

1 $1, # d ,

#"

- I ' / I D E N T I F I C A D O R \ a s p a s a s p a s / N U M C A R

(29)

Quando o transdutor reconhece um identificador, é executado um

procedimento especial para determinar se ele pertence ao conjun

-

to pre-definido, representado sob a forma de uma tabela. Caso

isto ocorra, trata-se de uma palavra reservada, e-não de um iden

-

tificador.

A tabela de palavras reservadas ê representada na memoria como

uma cadeia conthua de caracteres a partir da posição denomina-

da "Tabreserva", - ocupando 1130 bytes. As palavras reservadas lá

são colocadas em ordem ascendente de comprimento e em ordem al- fabética. Deste modo, temos todas as palavras de comprimento 1, depois todas as de comprimento 2, etc. A Última palavra de cada

grupo começa com um cãracter inválido em palavras, o casacter

" ) " , para indicar o final do grupo de palavras daquele compri

-

mento

.

Abaixo vai descrito o algorftmo de busca na tabela de palavras reservadas:

Passo 1: Inicial := função (comprim do ident, letra inicial)

Passo 2: Vezes := O

Passo 3: ~osição := tabreserva

+

inicial

+

(vezes

*

comprim do ident)

Passo 4: Compara caracter a caracter o identificador sendo ana-

lisado com o conteúdo das posições de memória

{ ~ o s i ç ~ o : ~ o s i ç ~ o

+

Comprim

-

1)

Passo 5: Se há igualdade, gera o token correspondente a palavra

reservada:

Token:= £unção (posição, comprim do ident)

Passo 6: Se não h8 igualdade e a letra inicial do identificador

sendo buscado é menor ou igual a letra em{posiçãoJ,en-

tão incrementa "vezes" e vai para o passo 3.

Passo 7: Se não igualdade e a letra inicial do identificador

sendo buscado é maior que a letra em{posição),então o

(30)

O algoritmo descrito acima foi elaborado visando-se um bom apro- veitamento na memória, aspecto mais critico desta implementação. Cada palavra utiliza apenas o seu comprimento real, sendo perdi- do apenas o espaço ocupado pela palavra fictfcia colocada no fi-

nal de cada grupo. Deste modo, 963 dos 1110 caracteres da tabela

sgo efetivamente aproveitados, isto &, 87%.

As funç6es mencionadas nos Passos 1 e 5 são algebrismos bastante

especificas,

definidos a partir do conjunto de palavras reserva-

das no Loban, visando um bom aproveitamento da memõria, como ex-

plicado acima. O aspecto 16gic0, que

6

fundamental, é explicado-

em detalhe no algor?tmo.

N ~ O há necessidade de manter-se uma tabela de identificadores.To

-

da a análise semantica eststica ser5 realizada pelo interpreta

-

dor. O tradutor se limitara a passar para o interpretador uma

descrição de cada identificador contido no programa lido, sem

(31)

Neste ~apitulo, com exceção da seção 3, utiliza-se a notação e

os conceitos básicos de teoria de conjuntos e teoria de lingua

-

gens desenvolvidos em ( 6 ) .

Na Seçzo 1 alguns conceitos bastante bâsicos são apresentados,

tais como o de grgmatica, somente para um melhor encadeamento de idéias, sem que se pretendesse cobrir todo o alcance de um curso sobre linguagens

O estudo sobre gramgticas com lados direitos regulares e suas re

-

presentaç&s, desenvolvido na ~ e ç a o 2, teve como refergncias ( 3 )

e

(51.

Maiores detalhes sobre o assunto abordado na ~ e ç s o 3, Arvores Bi

narias, podem ser encontrados em'{ll), cuja notação foi utiliza- da.

(32)

Um alfabeto

é

qualquer conjunto de símbolos.

Define-se uma seqtihcia de sTmbolos sobre um alfabeto C da se

-

guinte maneira:

(1) E é uma seqtiéncia sobre C

.

(2) Se x é uma seqtihcia sobre C e a esta em C, entgo xa é uma

seqfiência sobre C ;

(3) Nada mais

e

seqtiência.

*

Uma linguagem sobre um alfabeto C

E!

sempre um subconjunto de

.

Linguagens de programação tais como FORTRAN e LOBAN estão obvia

-

mente incluídas nesta definição.

Uma linguagem composta de um ncmero finito de seqtisncias de slm

-

bolos pode ser representada atravzs de uma lista de todas essas seqfiências. Para uma linguagem composta de um número infinitode

seqfiências outro método de representação necessariamente deve

ser procurado.

~á diversos métodos de representaçso que preenchem este requi

-

sito. Usaremos um método generativo, chamado gramática, Cada

sentença da linguagem pode ser construfda através de metodosbem definidos, usando as regras (produç8es) da gramática. Represen- tação atravês de gramgticas simplifica a análise sintática e a

tradução, por causa da estrutura transmitida 5s sentenças da

linguagem pela gramztica.

Uma gramâtica

6

um sistema formal para se definir uma linguageq

bem como um dispositivo para dar 2s sentenças de linguagem uma estrutura Ütil.

Uma gramgtica

e

uma quadrupla G= (N ,C ,P ,S )

,

onde:

(1) N é um conjunto finito de slmbolos não-terminais (algumas

vezes chamados de variaveis ou categorias sintáticas).

(2) C um conjunto finito de símbolos terminais, dis junto

(33)

(3) p 6 subconjunto finito de

N

x (N UC)

*

Um elemento (a,P! de Pserá escrito na forma e serã

chamado uma produ~ão.

( 4 ) S é um shbolo particular em

N

chamado símbolo inicial.

Uma gramática da forma descrita & dita livre de contexto se ca-

da produqão de P é da £orma Aja, onde A pertence a

N

e a per-

tence a (NLJC)*. Outros tipos de gramsticas com diferentes defi-

nições para P existem, mas não sSo relevantes neste estudo.

d

Como mencionado anteriormente, a salda do analisador léxico e

uma seqiiência de pares (tipo de entidade sintática, valor). Es-

ta seqtiência forma a entrada do analisador sintático, que ana

-

lisa somente os primeiros componentes dos pares

-

os tipos. A

informação sobre cada um

-

segundo componente

-

é usada mais*

de, na geração de código. Portanto, os primeiros componentes de pares são os terminais da gramstica.

A anãlise sintática ou "parsing"

6

o processo em que a seqaên

-

cia de pares examinada para determinar-se se ela obedece cer-

tas convenç6es estruturais explxcitas na definição sintática da

linguagem, isto é, se ela pertence 3 linguagem.

A partir de um conjunto de regras sintáticas é possrvel cons-

truir-se automaticamente analisadores sintsticos, ou "parsers!

que garantirao que um programa fonte obedece à estrutura sintá-

tica definida por estas regras sintsticas.

Restringindo-se 2 classe de gramáticas em estudo,

6

poss~velcons

truir-se analisadores sintsticos mais eficientes. Discutiremos o

caso de algorítmos de análise sintstica caracterizados pelo fato

de que a seqaência de entrada

6

lida somente uma vez da esquerda

para a direita e o processo de análise é completamente determi

-

nIstico.

Na verdade, estamos restringindo a classe de gramáticas livres

de contexto de modo que possamos construir um "parser" esquerdo determinístico - - - - - para - a gramática sendo considerada.

(34)

Diversos conceitos utilizados a seguir serão considerados de- finidos, encontrando-se no estudo de teoria de linguagens reali-

zado em { 6 } . são êles:

-

Derivação (=>I

-

Derivação esquerda (rm>)

-

"Parse"

-

"Parsing" preditivo

-

Forma sentencia1 ( a r

6,

yI

. .

.)

Para uma gramática livre de contexto

G

= (N,C,P,S), define-se

-

*

FIRST (a) = {x Ia&,=> xp), onde 1 m significa derivação esquerda. Is-

m

to é, FIRST (a) consiste de todos os sfmbolos terminais iniciais

das seqf!&cias de simbolos que podem ser derivadas a partir dea.

Diz-se que a gramática

G

é LL(l), se sempre que há duas deriva

-

~ Õ e s esquerdas:

*

*

(1)

S

=> wAa

+

wga => W x ; e

*

*

(2)

S = > wAa => wya => wy,

tais que FIRST (x) = FIRST (y)

,

então segue-se que = y

.

Menos formalmente,

G

é LL(1) se dada uma seqaência de simbolos

-

WAaem ( N U C ) * e o primeiro slmbolo terminal derivado de Aa, exis

-

te no máximo uma produçao que pode ser aplicada a

A

para produ

-

zir uma derivação de qualquer seqf!&ncia de terminais começando

-

por w seguido por este terminal.

possível efetuar-se o "parse" de gramâticas LL(1) de maneira

-

muito conveniente atravês de um algoritmo de parsing preditivode um s%nbolo, usando-se uma fita de entrada, uma pilha e uma fita-

de sazda. O algorçtmo preditivo de um shbolo tenta achar uma

(35)

C '9 a + b 4 Entrada -r T A B E L A DE P A R S I N G Y

z

d

7

saída

I

[

A fita de entrada contém a seqtlência de entrada a ser analisada,

seguida de -I

,

o marcadsr de final. Ela

6

lida por uma cabeça ca

-

paz de ler o pr6ximo sfmbolo, dito o srmbolo de avanço.

A pilha contém uma seqtlênciã de s~mbolos da gramática, precedidos

de - I . A tabela de controle do analisador é uma tabela bid.imensio

-

na1 M ( A , a ) , onde

A

é um não-terminal, e

a

é um terminal ou o sim- bolo -4 ;

O analisador sintático controlado por um programa que funciona-

da maneira descrita a seguir: o programa determina X, o shbolono

topo da pilha- e a, o s2mbolo atualmente na entrada. Estes dois

simbolos determinam a ação do analisador.

HS

3 possibilidades:

(1) Se X = a = - 4 , o analisador para e anuncia que a análise foi

concluída com sucesso.

( 2 ) Se X = a

#

-I,

o analisador desempilha X e avança o ponte20 da

(36)

( 3 ) S e X 6 um n ã o - t e r m i n a l , o programa c o n s u l t a a e n t r a d a da t a -

b e l a M ( X , a ) . E s t a e n t r a d a s e r á ou uma produção d a g r a m á t i c a ,

c u j o l a d o e s q u e r d o 6 o não-terminal X , ou s e r á uma . e n t r a d a

de e r r o . Se ~ ( x , a ) = ( X -+ U V W )

,

o a n a l i s a d o r s u b s t i t u e no

t o p o da p i l h a p o r W V U , com U no t o p o . Se M(X,a) = e r r o , uma

r o t i n a de r e c u p e r a ç ã o de e r r o s pode s e r chamada.

( 4 ) Em q u a l q u e r o u t r a s i t u a ç ã o a c u s a r á e r r o .

P a r a descrevermos um a l g o r i t m o d e c o n s t r u ç ã o da t a b e l a d e c o n t r o

-

l e p a r a a n á l i s e s i n t á t i c a p r e d i t i v a , f a l t a - n o s a i n d a uma f e r r a

-

menta.

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 . Define-se FOLLOW

( 6 )

,

sendo 6 p e r t e n c e n t e a ( N U C )

*

,

como sendo o c o n j u n t o { w I

s

z>

- aBye ti p e r t e n c e a FTRST (y )

1 .

I s t o é, FOLLOW ( A ) i n c l u e o c o n j u n t o de sfmbolos t e r m i n a i s que po-

dem o c o r r e r imediatamente a d i r e i t a de A e m q u a l q u e r forma s e n t e n -

c i a l

.

A i d é i a p o r t r á s do a l g o r i t m o d e c o n s t r u ç ~ o da t a b e l a é s i m p l e s :

s e j a A$a;uma produção com

a

p e r t e n c e n t e a F I R S T ( a ) , e n t ã o sempre

que o a n a l i s a d o r tem A no t o p o da p i l h a com a como símbolo na

e n t r a d a , o a n a l i s a d o r expande A p o r a . A Ünica complicação o c o r r e

*

quando a = E ou a = > & . Neste c a s o deve-se e x p a n d i r também A p o r a r s e

o símbolo na e n t r a d a p e r t e n c e a o FOLLOW ( A ) , ou s e o

-i

na e n t r a d a

f o i a t i n g i d o e 4 p e r t e n c e ao FOLLOW ( A )

.

Dada uma g r a m á t i c a G , o a l g o r i t m o d e c o n s t r u ç ã o da t a b e l a de con

-

t r o l e M do a n a l i s a d o r s i n t á t i c o

6

o s e g u i n t e :

(1) P a r a cada produção A-tada g r a m á t i c a , e x e c u t e o s p a s s o s ( 2 ) e

(.3 1 =

( 2 ) P a r a cada t e r m i n a l

a

em FIRST ( a ) , a d i c i o n e A-+ a na e n t r a d a .

(37)

(3) Se E pertence a FIRST ( a )

,

adicione A - m na entrada M ( A , b ) pa-

ra cada terminal

b

pertencente a FOLLOW ( A ) . Se E pertence a FIRST (a) e 4 pertence a FOLLOW ( A )

,

adicione A-ta na entrada

M

(A,+ 1

.

(38)

2. GRÃMATICAS RRP

A p r i m e i r a d e f i n i ç ã o r e l e v a n t e p a r a o e s t u d o de g r a m á t i c a s RRP é

- v . -

a d e e x p r e s s ã o r e g u l a r , mostrada na Seçao 4 . 1 .

Uma g r a m á t i c a com l a d o s d i r e i t o s r e g u l a r e s , d i t a RRP (do i n g l ê s

" r e g u l a r r i g h t p a r t s " ) , l i v r e d e c o n t e x t o , G

6

uma 4 - t u p l a G = = ( N , C , P , S - ) onde : (1) N e C s ã o c o n j u n t o s f i n i t o s d e não t e r m i n a i s e t e r m i n a i s , r e s

-

pectivamente: ( 2 ) P é um c o n j u n t o d e p a r e s (A-wr) t a l que A p e r t e n c e a N e IT é um c o n j u n t o r e g u l a r s o b r e ( N U C ) ; .. . ( 3 ) S é o slmbolo i n i c i a l

Uma d e r i v a ç ã o e m G

6

da forma:

u A v

=t,

u w v

se (A-tw) p e r t e n c e a P , e

w p e r t e n c e a IT.

A d e s c r i ç ã o de uma g r a m ã t i c a RRP pode p o s s u i r v á r i o s formatos.En -

t r e e l e s , s ã o i m p o r t a n t e s p a r a nós:

(1) Formato d e e x p r e s s ã o r e g u l a r . N e s t e c a s o TI 6 d e s c r i t o p o r ex

-

p r e s s ã o r e g u l a r s o b r e ( N U C )

.

( 2 ) Formato d e automato f i n i t o d e t e r m i n i s t i c o mínimo e m q u e 7 é

um A F D mínimo, o a l f a b e t o d e e n t r a d a é ( N U C ) e 6 mapeia Q x

( N U C ) e m Q.

P a r a que uma gramática RRP s e j a LL(1) a s condições s ã o a s s e g u i n

-

t e s :

S e j a G = ( N , 1, p , S ) uma g r a m á t i c a RRP l i v r e de c o n t e x t o não r e c u r

-

s i v a à e s q u e r d a , ou s e j a :

(39)

Ou a i n d a , s e G e s t i v e r r e p r e s e n t a d a em formato de autômato f i n i -

-

se Ai -+

1

e n t ã o Qii não p e r t e n c e a E.

1

G é LL(1) s e :

(1) 6; ( q , ~ ) =

r

e Gi

(q,B)

=s =+ FIRST(X)

n

FIRST ( B ) =

{ I

onde q ,

r ,

s pertencem a

ai,

B p e r t e n c e a N , e X p e r t e n c e a ('N UZ) ;

onde p e q pertencem a Qi,X p e r t e n c e a ( N U C )

.

D e f i n i r e m o s o s c o n j u n t o s FIRST usando G e P.como m o s t r a d o s a n t e -

r i o r m e n t e d a s e g u i n t e . f o r m a :

. .

(A) FIRST ( a ) = ( a )

,

com a p e r t e n c e n t e a C;.

( B ) S e (Ai+Mi) p e r t e n c e a P e n t ã o FIRST(Aa)= U FIRST

( X . 0

com

7

*

'

Note-se q u e se b p e r t e n c e a FIRST(Y) e n t ã o Y - = > b &

.

EXEMPLO :

FIRST (IP) = FIRST

(I)

U FIRST ( e )

FIRST(A)

= { d , e )

Com a mesma g r a m á t i c a G , o mesmo c o n j u n t o d e p r o d u ç õ e s P , pode

-

mos d e f i n i r os c o n j u n t o s FOLLOW:

(40)

( A ) Se

r

não pertence a

Fi

então FOLLOW (A. ) = U PIRST ( $ ) ,

1

com X K tais que Gi ( r , XK) =s ; k

( B ) Se r pertence a

Fi

então

Note-se que se b p-tence a FOLLOW ( Y ) então

s&>

a~ b y

.

EXEMPLO :

FOLLOW ( C ) = FIRST (B) U {-I} FOLLOW (C) = { d ,

d

Dispondo-se da gramâtica RRP escrita com os lados direitos repre

-

sentados por AFD mhimo, e os conjuntos FIRST e FOLLOW pode-se

construir a tabela de controle para um analisador sintático.

A tabela de controle fornece uma ação a ser executada para cada

par de

(Q

x

( N U C U { + } )

,

com os seguintes significados:

(A) (A, E) : Elimine o símbolo da entraae faça o estado atual ser

E. Corresponde a uma transição em um automato;

( B ) (D,n) : Insira o estado atual na pilha sintática e faça o es

-

tado atual ser ENTRY ( n )

.

Corresponde a uma deriva

-

(41)

reconhecimento do automato n t :

( C ) ( p o p , S ) : coloque o não t e r m i n a l S na e n t r a d a , como sendo o

p r i m e i r o s ~ m b o l o , e f a ç a o e s t a d o a t u a l r e c e b e r o conteúdo-

do topo da p i l h a s i n t á t i c a , que de l á deve ser r e t i r a d o ;

(D) ( F i m ) : i n d i c a n d o que a a n á l i s e e s t á concluPda. ( E ) ( E R R O ) : t o d a s a s e n t r a d a s i n d e f i n i d a s r e p r e s e n t a m e r r o s s i n

-

t á t i c o s . O a l g o r i t m o de confecção da t a b e l a d e c o n t r o l e é muito s i m p l e s . Recebendo-se um automato f i n i t o d e m Ú l t i p l a e n t r a d a , q u e r e p r e

-

s e n t a a g r a m á t i c a , e x e c u t a - s e o s p a s s o s a b a i x o

s6

preenchendo po

-

s i ç õ e s e m TABCONTROLE s e i s s o a i n d a não t i v e r s i d o f e i t o . Caso

-

c o n t r á r i o , p a r a e a v i s a que a g r a m á t i c a não é L L ( 1 ) :

( a ) P a r a cada t r a n s i ç ã o cS(p,X) =

r

faça TABCONTROLE(p,X) = ( A , r ) .

~ l é m d i s s o , s e X p e r t e n c e

N

f a ç a TABCONTROLE ( p , a ) v a l e r ( D ,

X ) p a r a t o d o

a

p e r t e n c e n t e a FIRST ( X ) ;

( b ) P a r a todo f que s e j a e s t a d o f i n a l de uma ~ r o d u ~ ã o ( P , +I$ ) £a

-

ç a TABCONTROLE ( f

,

b ) = ( p o p

,

Ai

)

,

p a r a t o d o b p e r t e n c e n t e a

FOLLOW

(Ai

) ;

( C ) P a r a t o d o 6

( p , x )

= q , q p e r t e n c e n t e a Fo, f a ç a TABCONTROLE

( d ) Faça TABCONTROLE ( p , x ) = ( E R R O ) p a r a t o d a e n t r a d a d e TABCON-

TROLE a i n d a não p r e e n c h i d a .

A t a b e l a de c o n t r o l e do a n a l i s a d o r s i n t á t i c o , t a l como f o i d e f i -

(42)

Uma estrutura alternativa utilizaria listas, diminuindo o espaço

ocupado, uma vez que a matriz é esparsa.

Em linguagem corrente, as condições para que uma gramática RRP

-

seja LL(1) são as seguintes:

(a) Em um dado estado, se for posslvel haver transição com dois-

símbolos diferentes, a interseçgo dos FIRST'S dos dois sim

-

bolos tem que ser vazia.

(b) Se for possível haver transição com um determinado simbolo a

partir do estado final de uma produçzo, a interseção do

FIRST deste shbolo com o FOLLOW do não terminal que ê o la-

do esquerdo da referida produção tem que ser vazia.

A primeira condição

e

necessária nos casos em que h2 transiçso a

partir de um mesmo estado com

um

não terminal e um terminal. Se

o terminal pudesse estar presente no FTRST do não terminal, O

analisador não poderia decidir inequivocamente com base no próxi

-

mo simbolo lido na entrada qual a a930 que deve ser tomada, não

prevalecendo a condição LL(l), A mesma restrição deve ser obser-

vada se houver transição a partir de um estado com dois não ter-

minais. #

A segunda condição 6 necessária para que o analisador possa de

-

cidir, quando estiver num posslvel estado final, se ele deve

continuar na mesma produção. Se o símbolo for uma continuação vá

-

lida, ou se realmente atingiu um estado final, caso o símbolonão seja uma continuação válida.

EXEMPLOS :

(1) A + c I B B + c d

Referências

Documentos relacionados

Abrangendo estudos de crítica textual, edição de textos e história da língua, a Filologia Portuguesa vem ganhando es- paço no cenário brasileiro, uma vez que, a partir de meados de

For instance, D2FA [53] tries to reduce the number of transitions by removing the ones common to pair of states from one of them and by introducing a default transition into it

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Estudos e técnicas que caracterizem o metabolismo ruminal destes subprodutos, como a técnica de produção de gases in vitro, é necessária para identificação de

Temos, no texto I, apenas elementos imagéticos (uma mulher com uma cesta ou bacia na cabeça, um galo, um igreja, cactos, entre outros elementos). No texto II,.. predominantemente

A intenção de compra também foi positiva, o que indica a torra como processo simples e economicamente viável para processamento do tempeh, e obtenção de uma farinha

Após a análise e aplicação da metodologia kaizen, a principal causa da baixa performance operacional da linha, tombamento de garrafas no trecho de saída da lavadora até

O livro é estruturado com a introdução e cinco capítulos, denominados respectivamente: O princípio constitucional da dignidade da pessoa humana e os povos indígenas;