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 SNECESSARIOS
PARA A O B T E N Ç ~ O DO GRAU DE MESTRE EMCIENCIAS
(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 3CRIVOROT, 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 ).
iii.AGRADECIMENTOS
-
A meu orientador ESTEVAM que, não sei como, me convenceu aaceitar 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 cursare 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.
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 .
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 .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
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 AFD5. Arvores de código
6. Gramática em forma de AFD com as árvores de códi-
40
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 eo 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
-
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 II
I MICROLOBAN I D E C O D I F I C A D O R Ii
I 1 If
I . . . a-v
ni
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-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 ra 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.
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 mminicomputador Nacional
-
começou a s e r d e s e n v o l v i d o no ano de1977 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 .
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çãoe 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 omé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
-
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 dei 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 denomes) 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-
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-
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 ã sagrupados 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
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
-
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 -
-
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 dec 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 dedados 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&-
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 .
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 a6
a de ( 6 1 . A função do a n a l i s a d o x l é x i c o6
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 dalinguagem.
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 a6
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 aforma 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
-
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 oia
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
-
.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 " lic
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ÍRGULAvf
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. EXTERNAREAL REPRESENT
.
EXTERNADATA 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
TELEIMPRESSORAA 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 r18
-
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 .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 . ~ mt 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 má-
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 sA 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 grupode 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
.
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 O0
I 1 = I1 / I G U A L " { I 1 / A B R E - C H A V E S0
" I " /
F E C H A C H A V E S0
i" L " /
A B R E - C O L C H E T E S0
I ' ] " / F E C H A - C O L C H E T E S0
"I
" /
M A R C A0
" < > I 1 / D I F E R E N T E0
II < = 11 L/
M E N O R - I G U A L" > = " I
M A I O R - I G U A L0
" > " / M A I O R0
II.
.
I 1/
D O I S P O N T O S" - " /
M E N O S0
1 1 * 1 1
/
V E Z E Scont. Fig.
I13
I ' ) " d " ) 'I/
F E C H A - P A R E N T E S E S0
" ) " / F E C H A - P A R E N T E S E S0
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 S0
" # " /
C A R D I N A L0
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 RQuando 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 há igualdade e a letra inicial do identificador
sendo buscado é maior que a letra em{posição),então o
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
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.
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 linguageqbem 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
(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. Ainformaçã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~velconstruir-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 esquerdapara 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.
Diversos conceitos utilizados a seguir serão considerados já 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 r6,
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
C '9 a + b 4 Entrada -r T A B E L A DE P A R S I N G Y
z
d7
saídaI
[
A fita de entrada contém a seqtlência de entrada a ser analisada,
seguida de -I
,
o marcadsr de final. Ela6
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, ea
é 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( 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 not 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 Is
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 sempreque 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 af 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 .(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 entradaM
(A,+ 1.
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 lUma 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 , ew 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 :
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 aai,
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
com7
*
'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:
( A ) Se
r
não pertence aFi
então FOLLOW (A. ) = U PIRST ( $ ) ,1
com X K tais que Gi ( r , XK) =s ; k
( B ) Se r pertence a
Fi
entãoNote-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-
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 os6
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 aFOLLOW
(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 -
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 apartir de um mesmo estado com
um
não terminal e um terminal. Seo 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