• Nenhum resultado encontrado

Pseudo-instruções prolog e seu ambiente de execução

N/A
N/A
Protected

Academic year: 2021

Share "Pseudo-instruções prolog e seu ambiente de execução"

Copied!
31
0
0

Texto

(1)

PSEUDO-INSTRUÇõES PROLOG E SEU AMBIENTE DE EXECUÇÃO

PARTE I

l-u i z Fernando P. de Souza Valério Machado Dal1o1io

NCE-i2/88

Grupo de lntel i gênc i a Art i T i c i al/'UFRJ

OI.1t l.1bro/88

I..Jrii,,;'er.!:;id,:\d(,:~ 1.:(:"~dE'r., "1 do I:~io (j(':~ ~J(:\nf::;ir.o \1'""'f" j .' \'.\..)l t"..."".::.'. f :

l

-".1.c."'.."""

1,(IA(...\":.o «(-. .c..nll.."l";:\I,,";;\U ..( \.I()IIIC"... r ." , , .~ 1 :> ,.. t" -" 1 ' i ..:' '.> "..

"-',:\ I ",:,o::, ."... (:"w(:.. t

;:.~'!)0';1j. --I~io (:If:.~ ..J:::...r\f:.'il..(:) ".- I~,.J

I

:I R..-,"" AÇ\." " .""

I

.

I

I::'":'~"(" 1".

,

,1 '. 11.1(...'

1

'.'i.

)I.

11"'I...r- I":'.'lli ":.' I.'

t

( "1:'I" I"1-'I-(.. I...:.jl(.) ..(.)1.' I ".'(".'."" )

r:" .'

() 1.) 1... )J."-'t( .)

""-'\". ",,";;\.. ,;\,""i.\.."- '"1-",,., ,,1, l ,0("... j. I"'."

1 "'S."r.R"J' 1 ('.

'

.I) .

I

. f' {'.. ::.,- .I.i(:,:...,:>.. ,r1..01..m,:\,:IC,...,j..rl..

~ UNIVERSIDADE FEDERAL DO RIO DE JANEIRO

(2)

(ndlCe

Part.e I

O. SlnOpse 1

O. Abstract. 2

1. ! nt.roduç'ão 3

2. Aspectos da Execução Prolog 5

2.1. Mecanlsmos de Controle 5

2.1.1. Ret.orno com sucesso. 5

2. 1.2 .Retrocesso. 6

3. Amblent.e de Execução 10

3.1. Organlzação das Molduras 10

3.2. Mecanlsmos de Desunlflcação : Trllha 11

3.3. Pllha Local. 13

3.3.1. Exemplo de Funclonamento da Pl1ha Local e

da Tl~11ha 15

3.4. p 11 ha G 1 obal 23

3.4.1. Organlzação e r~unclonamento á8 f.llha Glob8l ...27

3.5. Corte. 28

4. Conc 1 usao 29

5. Referênc 1 as. 29

jJarte i 1

I. lntroduç'ão 1

2. Proposta de Implementação àe uma Máqulna Abstrata Prolog ..2

2.1.R~pr~s~nt.ação dos Dados 2

2.2. A Máquln8 Abstrat8 3

2.3. Detalhamento das Instruções 5

2.3.1. Instruções de Passagem de Argumentos. 6

2.3.2. Instruções de Obtenção de Argumentos. 10

2.3.3. Instruções àe Unlficação 14

2.3.4. lnstruções de Controle 17

2.3.5. Instruções àe Indexação 22

2.3.6. Instruções para Pré-Defin1dos 33

2.3.7. Proceàlmentos Auxl11ares 36

3. Conciusões :t-..1naJS 39

4. l.(eferenc 1 as. 40

,

(3)

AMblente de Execuç~o da Máqulna Abstrata Prolog

O. Sinop...

~ste relat6rlo sintetiza parte do trabalho reallzado pelo Grupo

de Inteligêncla Artificial da Universidade Federal do Rlo de

Janeiro na pesquisa de iMpleMentações de COMplladores Prolog" ~

sugerlaa uMa implementação baseada no segundo trabalho de Uarren,

sendO revlstos em mlnúcia os aspectos apresentados naquele

traDalho. São resolVidos vários detalhes não mencionados por.

~arren e são apresentadas alguMas extensões.

Além alsto, abol'damos culdadosamente os mecanismos de execução da

linguagem f'rolog (Parte I) e expomos precisamente como utlllzar

as pseudo-lnstruções do c6dlgo 1ntermedlár1o (Parte II).

"

Projeto Prolog -Grupo de Intellgêncla Artlf"lclal 1

(4)

Amblente

de Execução

da Háqulna

Abstrata

Prolog

O. Ab.t.r.ct..

Thle

report

eynthetlzeS

part

of

the

research

lnto

Prolog

compl1er

lmplementatlonS

that

has

been

done

by the

Artiflclal

lntel1gence

f;l-.OUp

( Grupo

de

1 nte 11 g~nc 1 a

Art 1 f 1 C] a 1)

from

Un 1 vers ] dade

Fede~a!

ao

RlO

de

Janelro.

In

thlS

work,

we

suggest

an

lmplementatlon

baseá

on ~arren/s

second

report.

The

contents

of

~a~~en's

worK

are

revleweC1

ln

detal1.

Several

polnts

that

Qave

c

not

Deen

ment]oneá

ln

Uarren/s

work

are

solved.

And

some

lmprovements

are

presented.

The

Prolog

Language

execut]on

mechanlSms

are

descrlbed

ln àetal1

(Part

I) .ThlS

work

aiso

establlshes

preclsely

how

to

use

the

pseuáo-coae

( f'art

1 I) .

(5)

,.,"C.

00 COO0"O" ., "'""",

'0""Co

".,~

(6)

'.b'.n'.

ri. E..oU,.O

o. ..qu,".

'b.'r".

Pro'og

00m O ".u.r,o,

'on.""noo

d. ".,..

,.".,..

.m.nu.

"0

v'd.O

.,..

do 00"'ro'.

do ".0I.do,

ou'r.

..".n..o

.u,'o

r.qu.r.d.

p.'o.

"."".o.

d.

'ro'og

.u..

.n'.r'.o.

'0.

"gu.

b.n00

d" d,do.

.,0'.0.."n'.

"..

.n".r'.o.

p.dr.o

S"L

O 'r,O.'ho

.".

org.",z.do

d,

..gu,n'.

'or.,

D

o.p""'O

,

'pr"..n".

c.p.d...n".

0.

..p.cto.

d.

, .ngu.g..

'orn.ndo

o).r.

..

d.'.'.n".

.n"r.

Pro,og

.'.

, 'ngu.g.".

00nv.no.0n,."

d.

p'ogr,..,.o

D o.p"'o

, .pr.."n"'

.."r."..."""

'ru,",..

d.

0.00.

n.o

"..

p.r.

.",Or'.,

..."0"'.0

do P,olog

'P.r".

!,

',n.'..n,.

n, P.r'.

! I do r.,"d"o

..o,d..o.

Cru"ur,.

..

'.or...n".,,"

'n'.rn.

u",

.z.d..

..no...

'.p'...""'.o

(7)

Amblente

ae E~ecução

aa Máqu1na

Abstrata

Prolog

~.

À.p.C~O.

aa E~.cuç.o

Prolog.

~ste

capItulo

destlna-se

a

dlscutlr

os

conceltos

básICOS

de

organlzaç"ão

e

flu~o

à e

e~ecução

à o

Prolog,

relevantes

ao

t~UnclOnamento

lnternO

da máqulna

Proiog.

2.1.

Mecan18mO.

de COn~rOle.

En) f'ro i og , como em l1 nguagens

de

programação

do

t 1 po

Pasca 1 ,

Informações

aevem

ser

guaràaàas

em reglstros

à e atlvação

ao longo

da

e~ecuç&o

para

posterIor

utilIZação.

Estes

regIstros

de

atlvação

são

C1enomlnaàos

molàuras.

Mostramos

neste

Item

que

tlpO

de

lnf"or"maç6es

,jevell\

ser

guardadas

nas

moldur-as

a

flm

ae

POSSIDiilLar

o

processo

C1e resoluç~o.

No

próxImo

capítulo

alscuLiremos

maIs

a fundo

a organlzação

destas

Informaç6es

e sua

manlpulaç'ão

aurante

a execução.

~.1.1.

Retorno

com Suce..o.

A necessldade

de guardarmos

detalhes

de como evoluín)os

do

lníclo

ao

processamento

at~

o estado

atual

advém,

em parte,

à o fato

de

termos

de

lldar

com a operação

de retorno

de suDrotlna.

No

caso

espeCifiCO

do

Pro1og,

este

retorno

segue-se

a

caàa

flm

à e

pl--ocecilmento

com sucesso,

quando

então

temos

que

transfer

I r

o

controle

para

o

procealmento

que

causou

a

chamaàa,

o

ODjeLIVO-pal,

e

contInuarmos

e~ecutando

os

oDJetlvos

que

o

compõem.

Va 1 e

a

pena

I~essa 1 tar-

que

C1ev 1 ao

ao retrocesso,

o

tt-r"mInO

de

um

procedlmento

n'ão

implica

necessarIamente

em

Jogarmos

f'ora

sua

mo 1 dura .

~'assemos

a

anallsar

o

mecanIsmo

encarregado

do

retorno

com

sucesso,

sem

nos

preocuparmos

com

parãmetros

e

varIáveIs.

Ut lllzaremos

nos

pr6~lmos

exemplos

a segulnte

convenção:

"Xc"

é

um rótulo

para

o c6àlgo

C1a cláusula

"X"

e "Xm"

um r6tulo

para

sua

moiC1ura.

Estudemos

então

o segulnte

pedaço

de programa:

Pc::

p :-

q,

r,

s.

Qc:

q :

-Rc:

r

:-Sc:

s

(8)

AmDlente

de Execução

da Máqulna

Abstrata

Proiog

Sem multo

l~lgor

podemos

traduzl-lo

para:

Pc:

p :-

call(

q ),

call(

r

),

call(

s ).

Qc:

q

:-Rc:

r

:-Sc:

s

:-oe

Suponrla

agora

que

estamos

na cláusula

"q"

e,

tendo

esta

sldo

executada

com sucesso,

preclsamos

executar

o pr6xlmo

Objetlvo

do

corpo

da c 1 áusu 1 a "p" I que

causou

sua

at 1 vação .Conc

1 u ímos

que

preclsamos

ter

na

moldura

dos

procedlmentos

U~1 pontelro

para

o

objetIvo

C1e contlnuaç'ão

(CP) .Para

o

proceàlmento

"s"

não

ObjetlvoS

de

contInuação,

ao

seu

térmlnO

devemos

restaurar

O

contexto

do proced

1 mento

"p" , 1 sto

é:, devemOs

tornar

at 1 va

sua

mO1C1Ura.

Cada

molaura,

contém

além

de CP,

um ponteiro

para

a

llioldura

do ODjetlvo-pal,

denomlnado

CE.

CE

CP

+

+

+

Pm:

?

?

.t

+

+

+

I

+

I

+

Qrn :

I Prr\

I Rc

I

I

+

+

+

+

+

I

+

Rm:

Pm

I Sc

I

+

+

+

+

I

+

+

Sm:

I Pm

I

+

+

+

2.1.2.

R.troc...o.

(9)

Amb1ente

ae Execução

da Máqu1na

Abstrata

Proiog

Quanáo

um& f"alha

ocorre,

áevemos

retroceáer,

IStO

é,

retornar

ao

passo

maIs

recentemente

executado

para

o qual

haja

aiternatlvas

não

testaaas

retomanáo,

a partlr

deste

ponto,

a

execução.

Neste

c 980,

aua8

81 tu&ções

podem

ocorr.er.

~

1)

Se na alternat1va

denLro

áo proprlO

p1~ocealmento

devemos

~n~aQ

atlv~-la,

}-le~~ee1taflco

pal-.a

lseo

ce Uffl po}-ltel1-.0

(BP)

pal-"8 ,~

COd1qO do próxlmo

ponto

de entrada

no proceáImento

em questão.

2)

Caso

o procedImento

corrente

n.ão

possua

aiternatlvas,

retroceáemos

ao

proceálmento

maIs

próxImo

da cláusula

rejeItada

que

aInàa

possua

aiternaLIvas.

Para

ISSO

preclsamos

àe

um

ponteIro

(B)

que

nos

lnforme

a

moldura

do prOCedImento

maIs

recentemente

executaao,

que

possua

alternatIvas,

para

que

através

de8te

po8samos

acessar

o BP corresponáente.

Est-enaenào

o

uit-Imo

exemplo,

procedImentos

"q"

e

"s"

com

8lternatlvas,

e

supOndO

prln}ell~amente

uma execução

nOrll}81

(sem

retrocesso)

temos:

YC:

p ~- q,

r,

s.

QlC:

q ~-.

Q2c:

q

:-Rc:

I.. !

-Slc:

s

~-S2c:

s

(10)

AmDlente

de Execução

da Háqulna

Abstrata

Prolog

CE

CP

B

BP

+

+

+

+

+

I

p

-.M .~ .-.

?

I

'.. ~. I , , I I + + + + + t- t--- "1-- I I I Qlm: I Pm I Rc ? I Q2c j I i + "1 + "1 + ~ "1 + + + I I Rm: I Pm I Slc Qlm I +- + .t-- t --+-- + + I I Slm: Pm, Qlm I S2c <====== I I r + "1 + +

Se neste ponto ocorresse uma falha na cláusula "S", estarlamos na

SItuação um (I) de l'etl'ocesso e teríamos apenas que alterar o

campo BP aa moldura (assInalado acIma):

(11)

AmDlente

ae Execução

da Háqulna

Abstrata

Prolo9

CE

CP

B

BP

+

+

+

+

+

J

I

/

t

Pm.

I

?

I

?

I

?

i

?

I

I

j

I

I

i

+

~

~

+

+

+---

r-

~

+

+

I

I

Qlm:

I Pm

I Rc

?

Q2c

I

I

~

~

~

+

~

+

+

+

+

+

I

I

I

Rm:

I Pm

I Slc

I Qlm

I

f

I

~

r

~

~

r

~

+

~

~

+

I

I

S2m:

I P\Y1

I Ql\Y1

j

I

-r ~ ~ + ~

U\Y1 novo retrocesso e\Y1 "s" , s i tuaç'ão do 1 s ( 2) de retrocesso ,

desalocarla as motduras ae "r" e "s", nos levando a segulnte

conf 1 guraç.ão : CE CP B BP + r ~ + ~ Pm: ? ? ? ? +- ~ ~- +-- ~ -r- +-- +- + + I I Q2\Y1: I Pm I Rc ? I I -r + + + +

(12)

Amblent-e de Execução aa Máqulna Abstrata Prolog

3. Ãm~i@ftt@ Q@ E~8~~~~g.

Neste capítulo, completaremos o conjunto à as lnformações

armazenaàas em molduras, mostranao como estas est-arão organlzaàas

em nossa l h)P i ementação .

e

3.1. Or9anlzaç.o àa. Molàura.. o

Como fOI alt-o, uma cláusula à o Prolog ê basICament-e uma seqi.lêncla

de chamaàas a proceàlmentos. AssIm senào, a execuç~o de um

programa Prolog poàe ser representaàa através ae uma estrutura em

árvore, como o exemplo abaIXo:

pal( jOaO, jose ).

pa I ( J o ao , c ar.l os ~) .

pal( jose, august-o ).

pal( carlos, marIa ).

tlO( T, S) :- lrmao( T, ), pai( I, S ).

1 rhlao ( C, A) : -pSl ( X, C) , pa 1 ( X, A) . '! -t 1 o ( X, mar 1 a) . ;{ = jOSe + + I tlO( X, marIa ) ~ ~ I \ ~ ~ ~ ~~

lrmao( T, ) pal( carlos. maria )

~ + ~ +

I \

.f ~ ~--- +

pai( X, C) I pal( joao, A )

~ ~ ~

Cada nó da árvore deve ser V1StO como a moldura do Objetlvo

cor.l~esponàent-e, e os t~ 1 1 hos deste nó como as mo 1 dur as dos

ODjetIvos subordlnados. Em lInguagens convenclonals estas

h)Olduras são àesalocadas a med1da que os proced1ment-os termInam.

~ntretanto, no Proiog, as molduras dos prOCea1mentos Já

conclu1aos devem contlnuar exlstlndo para perm1tlr um event-ual

ret-rocesso.

Projeto Prolog -.Grupo de Int.ellgênc1a Art.1flclai 10

(13)

AmDlen~e

de Execuç"aO

da Máqulna

Abs~ra~a

Prolog

~IOaeMOe

obse1~var-

que

as

~o 1 dul~as

sao

cr 1 aàas

como

se

percorrêssemos

a árvore

em pré-ordem.

O re~rocesso,

por

sua

vez,

procura

por

ciausulas

com al~erna~lvas

a partlr

à as molàuras

mals

recen~emente

crlacas

para

as

mals

an~lgas,

ou seja,

na oraem

lnversa

em que

foram

crladas.

Não e

d1fícll

perceDer

que

es~e

mecanlsmo

se

aaap~a

multo

bem â estrutura

de pllna,

na qual

a

mo 1 àur-a

ma 1 s ao topo

sera

sempre

aque 1 a sobre

a qua j o l~etrocesso

aeve

agir.

InlCl~j~~ente

poáe~)os

conslderar

que

cada

molàu1~a

cont~m,

além

à as

lnformações

normalmente

encontracas

em reglstros

ae a~lvação

~als

como varlávels,

parametros,

ponto

à e retorno

e elos

alnãmlcos

e

estátlcoS,

aquelas

necessárlas

ao funclona~lento

ao Pro!og.

j.2.

M.can,~mo.

d.

D..untflcaçlo

Tr11ha.

Uma

vez

que

o

re~rocesso

locallzou

o

procedln~ento

mals

recentemente

atlvaào

para

o qual

exlste

alternatlva,

a

execução

ceve

prossegulr

a

partlr

cesta,

conslàerando

a

cláusula

alternatlva.

Para

que

lStO

seja

possívei,

as

varlávels

devem

l~etornar-

ao

que

eram

no ~Iomento

àa chamaàa

anter

1 01-- .i='ar"a

que

possamos

recuperar

os parâmetros,

toao

procealmento

que

possulr

mals

à e uma CjáUSUla

aeve

coplar

em ~ua moldura

os parãme~ros

que

lne

t~orall~

p&ssaaos.

No

C&SO

ae

proceàlmentoe

CO~I apenas

uma

Cláusuj&,

lStO

não

é

necessárlo

que,

não

possulnào

alternatlvas,

este

não

será

conslderado

pelo

retrocesso.

No

caso

à e varlávels

àevemos

nos

preocupar

com aquelas

que

foram

alteraaas

após

a

atlvação

co

procealmento

em

questão.

Vale

JeltIDr.Bl-.

que

s6

as

V&l-"l~VelS

i lvres

podem

ser

alteradas.

Asslm

senao,

necessl~amos

ae uma estrutura

ae aados,

a Trllha,

que

nos

p~rrrll t a

saDer.

qua 1 s

var 1 ~ve 1 s

de 1 xaram

de ser

i 1 vres

cesae

a

atlvação

ae

aetermlnaao

proceàlmento.

Quanao

ocorre

um

retrocesso,

estas

varlávels

àevem

voltar

a

ser

llvres,

num

processo

a que

cnamamos

aesunlflcação.

Na Trílha

são

empllhaaas

r.eier~nclas

par-a

as var.lavels

que

são

alteraàas.

Em caàa

moldura

ae procealmento

colocamos

um pontelrO

para

o topo

da

Trllha,

no

mOmento

da

atIvação.

Asslm,

as

varIávels

alteradas

desàe

a

a~lvação

ce

um

aetermlnado

prOCedlmento

são

aquelas

cujas

r"ef"erênclas

estão

entre

o topo

atua!

da Trllha,

TR,

e o pontelrO

armazenaao

na molaura

ao procealmento.

Nem ~oaas

as varlávels

alteradas

preclsam

ter

suas

referêncIas

col0CaCas

na Trllha.

Somente

aquelas

que

estejan)

em molduras

mals

antlgas

que

a moldur&

do prOCedlmento

sobre

o qual

o retrocesso

atuará,

VlStO

que

as cemals

molduras

delxarão

ae

exlstlr

quanao

nouver

o

re~rocesso.

Para

lStO,

mantemos

um

regIstro,

B,

apontanao

para

a molau1'a

ao procedimento

mals

recente

que

possua

8lternatlvas.

Obvlamente,

sempre

que

um novo

proceàlmento,

que

possua

alternatlvas,

é atlvacO,

salvamos

B na

sua

moldura

e

o

atuallzamos,

t~ormando

aesta

forma

uma cadela

de molduras

a serem

(14)

,

Amblen~e àe Execução àa Máqulna Abs~ra~a Prolog

COnS1Qet~aQa8 pe!o l~etl-.ocesso.

AssIm senào, na flgura abalXO, varIávels na área I aevem ~er SUCIS

t'eferéncIas co!ocaàas na Trl1h&, C8SO seJam aiterCIa&s. P8r&

varlavels n8 regláo II IStO não e necessárlO.

PILHA TRILHA I + +- + > -+ + I Ml I I +- ~. * + I + + I M2 t I .1 I -+ +- I / :t::I ===> I M.3 + > + + I I I' -+ * * + -t +- J i i M4 I I 1 -+ +- I M5 I I <=== TR I I + +-+

+-No caso de re~rocesso t.odCls as v8rIaveIs com ref.erêncla na área

riI Qevem ser aeSUn!fICaQas. r~lcamos, neste caso, com uma das

segu 1 n~es conr~ 1 gurações :

1) No caso ae M3 alnàa pOSSUlr alternatIvas alenI aa que vamos

cons 1 aer8r. . PILH.A TRILHA I + + + > + + I Ml I I I +- > * + I 00 I + + ,. I M2 I I / I i + T I ~~=== TR I B ===> I i M3 I + > + + I I I I j i I I I I +---* * + I + +

(15)

AMblen~e

de Execução

aa Máqulna

Abstra~a

Proíog

2) No caso de M3 náo possuIr- alterna~IVas além da que vamos

COnslaerar.

PILHA

TRILHA

I

T

T

T

) +

T

/

B ===)

,

M1

I

I

I

*

+

+

T

M2

111

i I

I

+

T

<=== TR

I

M3

+

T

/

I

-t--\

T

~.;j.

Pilha

L.oca! .

Lonlo

acaDamo8

ae

ver,

proceaIrnen~o8

compos~os

de maIS

de uma

ciáu8ula

aevem

guaraal~

em sua

rooldura

as

seguln~es

lnfol~mações

adIclonals:

COpla

dos

parãme~ros,

pontelro

para

o ~opo

da trIlha,

O

conteúdo

anterIor

ao

regIstro

B e o ponteIro

para

a pr6xlma

aiternatlva.

Além

destes,

devemos

copIar

alguns

regIstros

que

formam

o contex~o

ao proceàlmento,

para

que

possamos

restaurá-ios

em caso

de re~rocesso.

Dentre

e!es

CP e E,

como vImos

no capítulo

an~erlor.

Para

procedlmen~os

de uma s6 ciáusuia

aigumas

dessas

iniornICIç6es

não

são

necessarlas.

Logo,

as

molduras

são

pal~~lclonaaas

em aols

~lpOS:

pontos

ae escolha

e amblen~es.

Os

pontos

de

escolha

possuem

lnformações

necessárIas

ao

retrocesso

e são

Cl~ I a aos

pal~a proced

I mentos

que

possuem

ma I s

de

u~la

c 1 áusu 18

(~

81 ternat

1 vas ) .Para

que,

em caso

de I~etrocesso

-,

conslgamos refazer a chamada orlglnai, os parãmetros passados

nes~a

chamada

devem

ser

guardados

no

ponto

de

escolha

do

procedImento.

Os pontos

de escolha

86 s~o

descartados

em caso

de

retrocesso

que

esgote

as alternatIvas

ou através

do pre-deflnldo

"corte",

como veremos

maIs

tarde.

Os

ambIentes

contem

Infol~mações

normaimente

encontradas

em

regIstros

ae

atlvação

e são

crlaaOS

somente

para

prOCedImentos

que

possuam

n)aIS

de um Obje~IVO.

Vale

observar

que,

procedImentos

Prolog,

que

não

possuem

alternatIvas,

são

bastante

semelhantes

~os

procedImentos

de

lInguagens

de programação

convencIonaIs

e,

poaem

ser

descal'~aaos

ao t~rmlno

do procealmento.

Somente

em dols

casos

especlals

os pon~os

de escolha

são

desaiocados.

Segue-se

que

somente

os

ambIentes

mals

ao topo

na pIlha

Local

QUe o ÚltIMO

ponto

de escoiha,

podem

ser

descartaaos

ao t~lnal

de s~a

cláusula.

(16)

Amblen~e de Execuçao à& Máquln& AbBtr&t& Prolog

A~Ualmente ~emOB O segulnte possível aspec~o para a Pllha Local :

LOCAL + t-AI < t-+ I PE2 G9 -t > , j .t t- I A2 * + I < + I -t + I I i PE3 I -t * I I i > , I + + I B ===> f I PE4 I -t * I I I I I + I E ===~-" Ã4 I I * + + +

Os .pon~os aqul descrltos flC&rão mals cl&ros no exempio a segulr.

00

(17)

Amblent.e de Execuçao da Máqulna Abst.rata Pl~olo9

J.3.1. ~~efflpIO d. Fune~on.m.n~o àa Pl1na Local. àa Tr11h..

ExemplO:

1-. portavel ( P, varlos ) :- escrlt.o( P, c) . 2- portavel( P, msdos ) :- escrIto( P, pascal ),

slstema( P, msdos ). 3-. portavel( P, unlx ) :- escrlt.O( P, pascal ),

~ slst.ema( F', unlx ) .

4 -.escr 1 to ( 1 nterpret ador , c) . 5- ~scrlt.O( teàmos, pascal ). 6- pront.o( ~eamos ) .

,7-. 81 stema ( teàmos, n}sàos ) .

8- alsponlvel( X, S) :- pronto( X ),

portavel( X, S ). 9-. .i' -.a 1 spon 1 ve 1 ( A, B ) .

( 1 :' (;Onf.lguraçao lnlClal.

Atlvaç.ão ae "dlSpOnlVel( A, B )',.

~, 1 LHA LOCAL TR I LHA

+ + + + <== TR LO I CP: Sucesso J TO I LlIE:LO-2 I Tl1 L2 / L: Falha j L3 I TR= TO- 1 I L4 I B : LO- 1 I <== B + + L5 , CP: Sucesso I Ló I E: LO I <== E L7 I (A) Llvre I L8 I (B) L1Vre I + +

(18)

Amblente ae Execução àa Máqulna Abstrata Prolog

{ 2. ) Entr.aaa en} ..àlsponlvei( X, S ).'.

UnlflCação àa pergunta com a cabeça da cláusuia. VarlávelS mals

r.ecentes. .'X" e "S", rer~erenclam varlávels malS antlgas, "A" e

"B ,. .

PILHA LOCAL TRILHA

+ + + + <== TR LO , CF': Sucesso TO I Ll I i: : LO- 2 Tl I L2 ! L: }.~ a i ha i..3 I TR: TO- 1 L4 I B : LO -1 '-:== B + + l..5 CP: Sucesso I L6 E: LO -2 I i..7 ( A) L 1 vr.e L8 (B) L!Vre -1 + L9 C1=' : Sucesso L1O' E: L6 '-:== E Ll11 (X) L7 i..121 (S) La + +

(19)

AmDlen~e ae Execuçào aa MáquIna Abs~ra~a Prolog

( 3 ) At 1 v&çáo ae 'Jpron~o ( X) .J .

A unlflCação da varlávet JJX... J.A.' na veraade, com a cons~an~e

"t.e..amos" n~o [.&2 COM que 8 V&I~ 1 ável tenn8 sua ref.er~nc 1 & coloc&da

/)a Trllha pO1S 'JA'J es~á mals ao topo que o ponto ae escolha malS

I~ecen~e .

O prOCealmento "pront.o'. não crla amblen~e, pO1S não pOSSUl malS

ae um obJetlvo, e tamDém não crla ponto de escolha Já que é

Con}pogt.o por apen as uma c 1 áusu 1 a .

PILHA LOCAL TRILHA

+ + + + (~== TR LO I CP: Sucesso TO I LI! E: LO- 2 Tl I L2 I L: Falha l...3 TR : rl~O -1 L4 B : LO -.1 <== B + T L5 ! CP: Sucesso I 1..6 E: LO- 2 L.7 (A) t.eamos L8 (8) Llvre + T L9 I CP: 5ucesso I Ll01 E: L6 I <== E Ll11 (X) L7 I L121 (S) L8 I + T

(20)

AMbIente de Execuç~o da MáquIna Abstrata Proiog

( 4 ) At 1 vação de "portave 1 ( tedMOS, S } " .

Ê crlaao um ponto de escoiha onde são copIados os parãmetros, e a

aiterna~lva é a segunda cláusula de portável. Con)o VImOS, O

amDIente de dISponível pode ser descart-aào, pOIS não havIa ponto

ae escolha maIS ao t-opo que este.

A unIfIcação com a cabeça aa cláusula f.az com que "S", na verCiaàe

"8", passe a vaier "varIos". .Uma vez que esta varIável est-á maIs

aDaIxo na pllha que O pont-o ae escolha maIs recente, Colocc9mos

sua r-ef'erênc I a na Tr I 1 ha .

PILHA LOCAL TRILHA

+ + + + LO i CP: Sucesso TO I LB I (:== TR LliE:LO--2 Til I L2 I L: r~ a i h a L3 i TR: TO- 1 1-4 i i3 : LO -I + 1-L5 I CP: Sucesso I L6 í E: LO- 2 I <== E Ll I (A) tedmos LB I (8) varIos .r + L9 , (X) L7 I .L.1OI (5) LB I L 111 CP: Sucesso I L121 E: L6 I L131 L: claus. 21 L14 I TR: TO -I I L151 B : L4 I <== B + +

(21)

AmDlente ae E)(eCU9ão cia Háqulna Abstrata Proiog

( 5 ) Atlvação ci.e "escrlt.O( teci.mos, c )...

É crlaao um ponto ae escolha V1St.O que o prOCeQlmento tem auas

r~láusuiaB. Como a atlva9ão nao unlflCa CO~\ a caDeça ci.a prlnlelra

c 1 áusu 1 a ao proced 1 ment.o "escr 1 to" , usamos este ponto de esco 1 ha

íoqo em segulda, desvlanào para o enaereço lnàlcaào em L. Como o

vaLor ae TR guaràaào no pont.o cie escoiha colnclàe com o vaior

a~uai ào reglstraàor TR, COnclulmos que nenhuma varlavel deve ser

aesunlflCaQa.

PILHA LOCAL TRILHA

+ +. + + LO i CP: Sucesso I TO j L8 I <== TR Ll E: LO --2 I Tl I I i..2 I L: Falha L3 I TR: TO- 1 L4 ! B : LO -1 + t-i..5 I CP: Sucesso , L6 I E: LO -2 I <== E L7 (A) tedmos L8 {B) varlos .t + L9 i {X) L7 LIOI (S) i..8 Ll11 CP= SuceBSO ! L121 E: L6 I L131 L: claus. 2j L 1 4 I TR = TO -1 I L151 B : L4 I + + L161 t.eamos L.17i c L181 CP: Sucesso I L.191 E: Lb L2O1 L = claus. 51 L211 TR: TO I L221 B : L15 I <== B .t +

(22)

Amblente de Execução da Máqulna Abstrata Prolog

( 6 ) At 1 vaç'áo da segunda c 1 áusu 1 a de "escr 1 to" .

U~111ZamOS para lSSO os parâmetros salvos no ponto de escolha do

.pr.oc~dlm~nto. Como não há mals alter-na~lVas a consláerar, o pon~o

oe escolha é removloo.

A clauSula a~)vaOa ~amDém n~o unlf-lca com a chamaáa, ocorrenáo um

novo re~rocesso, u~lllZanao des~a vez as lnformações contldas no

.ponto ae escolha crlado por "portavei".

PILHA LOCAL TRILHA

.+ + -t t-LO I CP: Sucesso TO I L8 I <== TR ~ltE!~0-2 Tli I L2 I L! Falha L3 I TR : TO .-I L4 I B ! LO- 1 -t t-L5 I CP: Sucesso L6 i E: LO- 2 <== E L7 I (A) teamos L8 I (B) varlos -t + L9 j (X) L7 I L10 I (S) L8 I i... 1 1 i CP: Sucesso I L121 E: L6 I L13i L: claus. 21 L14 I TR! TO -.1 L151 B ! L4 I <== B -t

(23)

AMOlente ae Execução aa Máqulna AbBtrata Prolo9

( 7 ) At lveção C1e eegunae C 1 áuBU 1 a de "portave 1 " .

O retrocesBO em C 1 ma ao ponto ae esco 1 ha cr 1 aao por "portave 1 "

t-CIZ C:Ofli que a vel-.1ável C:UJCI I-.ef.er~ncle eBtá ne Trl1he saJe

aeBunlf.lcaaa, tornada lIvre. A unlflcação da chamada com a Cabeça

Qa gegunaa cláusula do predlcaao atrlbul a varIável "S", "B" na

vef'aaae, a constante "msàos" .UMa nova refer~nc I a para "B" é

c:olocaàa na TrIlha. É feIto então, a chamaàa ao procealmento

"escr I to" .

P1LHA LOCAL TRILHA

+ + + + LO i CP: Sucesso I TO I L8 I <== TR LlIE:LO-2 Tl1 I L2 I L: r~a 1 ha L3 í TR: TO- 1 L4 I B : LO- 1 T + !..5 I CP: Sucesso I i.6 I E: LO -2 <.== E L7 i (A) t.~amos L8 ! (B) msaos .t + i.9 I (X) L7 I LIOI (S) L8 I i.l11 CP~ SuceBBo I L121 E: L6 I L131 L: claus. 31 L141 TR: TO- 1 I L151 B : L4 I <== 8 T + 00

(24)

AmDlente

àe Execuçào

àa Máqulna

Abstra~a

Proio9

( 8 ) t:n~r.aaa

em ..eSCrl~O(

tedmos,

pascal

)".

A

prlmelra

cláusuLa

deste

ObJetlvo

n.ão unlflCa

com a chamaQa.

ContlrlUamOs

então

peia

ciáusula

alterna~lva,

que

unlflCa

com

a

cnamaQa.

satlsfazendo

este

obJetlvo.

O

campo

CP ào ponto

de

escoiha

nog

Qá o ODJetlvo

de contlnuaçáo.

O ponto

de

escolha

de

"escrlto"

Qeve

ser

àesalocaào

pO1S não

há mals

alternatlvas

a

cone:1Qerar.

e

PILHA LOCAL TRILHA o

+ + + + LO I CP: Sucesso I TO I L8 I <== TR LlIE:LO-2 I Tl I L2 I L: r' a 1 ha I i..3 I TR: TO- 1 I L4IB:LO-l I .t + L.5 I CP: Sucesso I L6 I E: LO -.2 I <== E L7 I (A) t,edn)os I i..8 I (B) msaos I .t.-- + L9 I (X) L7 I L1OI (S) L8 I Ll11 CP: Sucesso I i..12f E: LE, I L131 L: claus. 31 L14 I TR: TO -1 t L151 B : L4 I .i T L161 teQmos I L17i pasca! I L181 CP:2o. obj 21 L191 E: LE, I L201 L: c:laug. 51 L211 TR: TO I L22t 8 : L15 I <== B +

(25)

AmDlent-e <ie Execução aa Máqulna ADst-rat-a Prolog

( 9 ) At-lvação de "slst-ema( t-e<imos, msaos )".

A chamaaa unlflCa com a caDeça àa cláusula. Est-e procedlmento não

,::r'l a l-lem pont-o de !?SCO i ha !1 e lI) amb 1 ente e a execuç~o prossegue

então pe!o pont-elro de contlnuação, CP, do amDlent-e, que no caso

cont-ém sucesso. ~Ogo, a execução Lermlna report-ando o valor das

var 1 áve 1 s II A" = "teamos" e "8" = "msaos" .

PILHA LOCAL TRILHA

+ + + + ~O I CP: Sucesso I TO I L8 <== TR LliE:LO-2 I Tli L2 I L: r'a 1 ha , L3 I TR : TO -1 I L4 I B : ~O- I I -t + L5 i CP: Sucesso ~6 E: LO- 2 <== E !..7 I (A) t-eamos L8 ! (8) mscios + + L9 I <X) L7 I LlOI <5) L8 I L111 CP: Sucesso I L121 E: L6 I L131 L: c i aus .31 i..141 TR: TO- 1 i..l51 B : L4 <== B -to + 3.4. p 11 ha G loca ! .

(:::OhiCI Ver'!?lI)Oe !10 exehip 10 aba 1 XO , apenas a p 1 1 ha Loca 1 e a Tr 1 i ha

n'ão são suflClent-es para suportarmos listas e estruturas. Nestes

casos veremos que surgem referênclas pendentes devldo a

aesa!ocaç'áo dos amblent-es. Para efelto de slmpllflCaç'ão no

exemplo, não nos preocuparemos com o armazenament-o das

est-rut-uras, mas Slm com as referêncIas para as varlávels.

Exempio:

(26)

A~blente

ae E~ecuç~o

da MáquIna

Abstra~a

Prolog

cons(

C, R,

(CIRJ

) .

coloca(

A,

B )

:-cons(

Y, A,

B ),

pega(

y ).

pega(

a ).

pega(

D ).

.:.- coloca(

[ b,

C: ),

X ).

( 1 ) COnf.lgurEIç.ão

lnlC1El!

na atlvaç.ão

ae "COloca":

f' I LHA LOCAL

TR I LHA

+

+

+

+ <== TR

LO I C~) : 5ucesso

TO I

Ll

! E:

LO-

2

Tl

I

L.2 I L:

r' 8 ! rl8

L3

I TR:

TO .-1

L4

I B:

LO-

1

I <== B

+

+

+

+

L5

I cP:

Sucesso

I

XO I b

L6

I E:

LO-

2

I <== E

Xl

I c

L7

j :{ : L 1 vre

I

+

T

T

+

( 2 ) Após

en~rarmos

em "COlOCa"

:

PILHA

LOCAL

TRILHA

+

+

+ <== TR

LO I CP:

Sucesso

I

TO I

LlIE:LO-2

I

Tl1

L2

I L:

Falha

I

L3

I TR:

TO-

1

I

L4

I B : LO-

1

I <== B

+

+

+

+

L5

I CP:

Sucesso

i

XO I b

L6

I E:

LO-

2

Xl

I c

L7

I X:

LIVre

X2 I L12

+

+

X3 I XO

L8

i CP:

Sucesso

I

+

+

L9

I E

L6

<== E

L1OJ

A:

XO

Ll11

B : L7

L12,

y = L1VJ..e

T

+

(27)

Amblente ae Execuç'ão aa Máqulna Abstrata Prolog

3) Após unli'lcarmos "cons", crlamos uma nova ilsta e f'azemos

"X" de "coloca", alocaao em L7, apontar para a lista. A tátlca

apl~esentada chama-se c6pla de estrutura visto que cada atlvação

ae "cons" crlarla uma nova llst.a totalmente lndepenaente à a llsta

anterlor. Outra tátlca também utl11Zada, mas que não adotaremos,

cnama-'se compartllhamento de estruturas, em que as partes

I::onst-antes não preclsam ser copladas, dlmlnulndo a aemanaa de

memórla mas ploranao a eflClencla no acesso aos componentes àa

estrutura.

ylLHA LOCAL TRILHA

+ T + + <== TR LO j CP: Sucesso TO Ll I E: LO -2 Tl l...2 I L: :r-~a 1 ha L3 I TR: TO- 1 L.. 4 B !...O -1 <-== B + "--+ + + L5 CP: Sucesso XO i o Lb E: LO- 2 Xl I c: Ll X: X2 X2 I L12 + , + X3 I XO LB CP: Sucesso I + + L9 I E: Ló I <== E J...1O I A: XO I Lll1 B L7 L121 y : Livre + +

( 4 Ao ciesalocarmos o ambiente de "coloca" e atlvarmos o

procea 1 mento "pega" , t-emos que a var 1 áve 1 "X" da pergunt a está

\nst-anclaaa com uma j Ista CX2) na qual um aos elementos (a

caDeça) é uma ref'erencla para uma varlável CL12) à o ambiente de

"coioca", que não exlste malS. CrIamos assim uma referência

penaente.

t-) t LHA LOCAL TR I LHA

+ + + <== TR LO I CP: Sucesso I TO I LliE:LO-2 I T11 L2 I L: Fa 1 ha I L3 f TR: TO- 1 L4 ! B : LO- 1 <== B -+ + + + L5 I CP: Sucesso I XO I b Ló I E: LO- 2 I <== E X 1 I c L7 X: X2 f X2 I L12 + + X3 I XO + +

(28)

..0'."'.0.

'..0""0

'O "0"'"0

".'CO"

'CO'o,

,.,.,..

'C."

".0"

q".

'0"..

CC,."

".,"","C,..

,."".",".

,

"""

""'0

"" ,"..

",",""".

,,""..

, """'0.,,0

"" ".,

".",,".,

,"". '0. ".. ..,"","", ., """'0',,0 0. ",",'". ,"c. '0. ",,". .C'".."'o ,"C" " ".,,","C,

'00".."0

C'.O

.O """'C'""O"

O"""

, ,",."

00'oC""0"

""

"',.

'.C"",.

"""

".,.C."".

0",

,

,"""

,.C."""'O

..,,"

,".

.O

0".,00'".0.

.0,,"",.

0"","..0.

'0"'."ifO.

'0 """'C"".o"

".O

,'C,,""

00.

".,

e.cc","C,

"'O

000..0.

000""

",

".'C","C,

".,

c.'e"."o"

""'

" "'C,.".

;"""O.

""CW 000"'"'",0

CO00".0.

".

".C,,""

"..

".,.",",,"

"".

..,",,"",

CO,O

0'0

,0'".0.

,.C.",,"

'.0

0"0."'..0

"'-,

O..CC"o

,""

"W

°"'.C.-o"

""'"C'"C,..

'""0.",.,

,

.0'"'W

""00"'".0'

"

.°",.'W

,.

"..

."".o"

.WC.'W

°'"'.'C.

,""."

""e 'O"'"" ,"","".. e "'"."00 ..." 0 '"o""". ,"

""" 'C,,'o O." ",",.""," CO. ".'C,,"C."

,.C,

e' ,",",

::0;:;;:.:,;0

:';

."",. ,". ., ".

,0"'"'"00." 0 '..00 ,. .","",'C"

(29)

:~

AmDlen~e de Execução da Máqulna Abstrata Proiog

~.4.1. Organizaçlo .FuncIOn.m.n~o àa Pilna Global.

A alocaçáo de ar.ea dln~mlca para as estruturas ocorre no processo

ae unlflCação. Quando ocorrer um re~rocesso, tudo que fOl crlado

pel~ unlt.lr:~Çac:1 ~pciB ~queie pont.o de ~scoJne pocie delxar- de

exls~lr,- lnCJUS1Ve as estru~uras. Logo, devemos saber que áreas

f-oram aiocaaas antes e após a crlação do ponto de escolhe. De

mesma forma, quanco estlvermos un1f1cando duas varlávelS na área

dlnâmlca, necessl~amos saber qual a mals antlga, evltando

referênclas penaentes.

~'elas condlções que acabamos de apresentar, devemos organlzar a

área alnâmlca na forma de uma pllha, a que cnamaremos de Pllna

I:;lobai. Desta f.orma, crlamos também um novo reglstro, H, que

con~erá a próxJma poslção llVre na Pilha Global. Uma cópla de H

devel~a-cons~ar. aos pon~os a~ escolhe de modo que em caso Ce

r.e~l'OCesso possamos i I Derar áreas entr.e o topo atua 1 , H. e o topo

no momento de cr.lação do ponto de escolha. Anaiogament-e à Pllha

Local. varlávels Ilvres aa Pllha GioDal, mals ao topo que O

J.~g 1 st-r.o ii se! vo no ul t 1 mo pont.o de ~sco! ria, n'Sjo prec 1 saro ter

suas refer§nclas coiocaaas na TrlJna, uma vez que em caso de

l~et-rocesso es~as aelxarão de exlstlr. Para lloplemental~ essa

o~lmlzaç~o necesslt-amOs consultar O reglstro H salvo no ultlmo

pont-o ae escoihe. ~m vez dlSSO, crlamos um novo reglstro, rlB, que

con~erá esta Informaç~o.

~M UM esquema de compartllhamento as ~s~ruturas serlam

representaaas por um pontelro para sua parte flxa, esqueleto, e

uMa sequ~ncla de c~lulas que preencherlam as partes varlávels da

estru~ura. Duas es~ruturas crladas pela mesma cláusula

cOmpart-llnarlam O mesmo esqueleto, possulndo cada uma, seu

conLJun~o ae células. No nosso caso, coplamos a estrut-ura

Int-eql~ajmen~e. t-an~o a parte r~lXa como a varlável, a caaa nova

atlvaçáo aa cláusula. Esse gasto aalclonal ae memórIa é

cc..m'pensaao por uma loalor slmpl lclC1acie no acesso. As estruturas se

orqanlzam na Pilha GloDal em poslções contíguas, sendo a prlmelra

U~) pon~ell~o para o t~unlonal/arldade e as deMels os seus

argumentos. No caso de 11 s~as n.ão ex 1 ste O ponte I ro para o

funClOnaJ.

00

(30)

AMOlente de Execução da Máquln& Abstrata Prolog Exemplo: L a ( b I C c' -CJ J J ] . -to + c ( + + + I n 1 1 I + + i -to---:) b I I + 1 I I i * + ! + + & I + + -to * ; +

i~X..n:lplO: ODI--8( aut-or-( jorge-&m&ao } , t-It-UlO( m&r--morto ) j .

-to + f obra/2 + + I * + -to I -to * I T o- f aut-or /1 ( + + + jorge-amado I I -to + to > tltulo/l "1 T I mal~-mol~t-o -to t. 3.~. Cof'to.

A f-unção ao corte e ellmlnar tod-os os camlnhos alternatlvos desde

a ativação do predlcado que o contém até o ponto em que este

dp&rece. isto se traduz em elImInarmos pontos de escolha de modo

que o retrocesso não os consIdere. Asslm sendo, será necessárJo

guardarmos em um regIstro, CR, o Ultlmo ponto de escolha crlado

antes aa entrada em UM procedimento. Este registro d-eve ser salvo

nos pontos d-e escolha e nos ambIentes.

(31)

Aft}blent.e

àe Execuça:o

àa Máqulna

Abst.rat.CI

Proiog

4.

Ccncluglo.

Como

V1StO

nessa

prlmelra

part.e,

Proiog

apresen~a

alguns

pontos

semelhan~es

e

outros

Das~ante

dlferent.es

das

llnguagens

u~lll~aàas

~onVenC1QnaJnient.e,

~anLQ

rlo 8eu

8Bp~CLO

~xt~r.rlo,

COMO

no seu

funclonamen~o.

Um programa

em Prolog

apresenta-se

como uma

aescrlçáo

àa

16g1ca

ào algorlt.mO

~M quest.'ão,

flcanao

pratlcamente

~oaa

CI part.~

ae

f.luxo

de

execução

8ob

re8ponsabll1aade

da

J lnguBgem.

Devldo

CI lSSO,

CI "Máqulna"

Prolog

aemanàa

um esforço

multo

malor

no

sentlao

àe

proplclar

os

mecanlsmos

aqul

apresent.ad.os.

5.

R.f.r~nc188.

LAl~lT84J

Arl~Y/}.~rolog

:-

The

Programmlng

Language,

Arlty

Corporatlon,

1984.

LCLOC81 J

F)rogramm 1 ng

1 n Pro l og ,

fJililan

r.

Ciocksln

e Chlrstopher

S.

Mell1Sh,

Sprlnger-VerJag

Berlln

Heldelberg,

1981.

LT[CK84j

Evan

T1C~.

SeQU~nt.laJ ~)roloq MaCrllne: iMaqe and Host Archlt~tures .-.,

ACM Slgmlcro

Newslet~er,

New Yor~.

jEEE.

15(4):

204-21b,

dezemDro

de 1987,

The Seventeen~rl

Annua 1 M 1 croprograft}M

1 ng fJorkshop

,

New Orieans,

1984.

(fJARR83j

Davld

H. D. fJarren,

An Abstract

lnstruct1on

Set.

TeCnnlCal

Note

309,

SRl

lnternatlonai,

Menlo

Park,

Callfornla,

outubro

de 1983.

Referências

Documentos relacionados

A fase de registo de propriedades que é onde os jogadores têm de fazer as medições da suscetibilidade do terreno, e a fase de planeamento, onde o objetivo é planear quais as

O fortalecimento da escola pública requer a criação de uma cultura de participação para todos os seus segmentos, e a melhoria das condições efetivas para

Não obstante a reconhecida necessidade desses serviços, tem-se observado graves falhas na gestão dos contratos de fornecimento de mão de obra terceirizada, bem

O Estudo de Caso analisou os fatores extra e intraescolares associados à eficácia escolar do Instituto de Educação Eber Teixeira de Figueiredo, instituição de ensino da

intitulado “O Plano de Desenvolvimento da Educação: razões, princípios e programas” (BRASIL, 2007d), o PDE tem a intenção de “ser mais do que a tradução..

De acordo com o Consed (2011), o cursista deve ter em mente os pressupostos básicos que sustentam a formulação do Progestão, tanto do ponto de vista do gerenciamento

Neste tipo de situações, os valores da propriedade cuisine da classe Restaurant deixam de ser apenas “valores” sem semântica a apresentar (possivelmente) numa caixa

À vista de tudo quanto foi dito, a forma mais adequada para compreender a questão parece ser a seguinte: (i) os direitos fundamentais são, em princípio,