You are on page 1of 5

11/6/2008

TabeladeSmbolos AnliseSemntica ATabelade Smbolos


FabianoBaldo Apsarvoredederivao,atabeladesmboloso principalatributoherdadoemumcompilador. possvel,masnonecessrio,postergara construodatabeladesmbolosatapsoparsing tersidoconcludo. maisfcilconstruiratabeladesmboloscom informaesvindasdoscannereparser.

FabianoBaldo UDESC

PrincipaisOperaes
Asprincipaisoperaesnatabeladesmbolosso:
Inserir:Usadaparaarmazenarinformaes,taiscomo,tipo eescopo,natabeladesmbolos. Verificar:Usadapararecuperarinformaesassociadasa umnome,quandoessenomeutilizadocomoumcdigo. d tili d di Remover:Usadapararemoverinformaesquandoestas noseromaisutilizadas.

EstruturadaTabeladeSmbolos
Tipicamente,atabeladesmbolosumaestrutura dedadosdotipodeumdicionrio. Aeficinciadastrsoperaesbsicasvariade acordocomaorganizaodaestruturadedados. g Implementaestpicasdeestruturasdedicionrios solistaslineares,rvoresdebuscaetabelasde hashing. AlistalinearimplementainserocomtempoO(1) e deverificaoeremoocomtempoO(n).

FabianoBaldo UDESC

FabianoBaldo UDESC

EstruturadaTabeladeSmbolos
Atabeladehashing implementainsero,verificao eremoocomtempoO(1).
Amaiordesvantagemdatabeladehashing soascolises demapeamento,quedegradamodesempenhodas funesdeverificaoeremoo. f d ifi

Declaraes
Ocomportamentodeumatabeladesmbolosdepende fortementedaspropriedadesdasdeclaraesdalinguagem. Aformacomoasoperaesinserir eremover manipulama tabela,quandoelasdevemserativadas,quaisatributos devemserinseridos,etc.variamparacadalinguagem. d i id i d li Atmesmoomomentoemqueatabeladeveserconstruda, eporquantotempoeladeveexistir,podevariarentre diferenteslinguagens.

Arvoredebuscabinriaimplementaasoperaes deinseroeverificaoO(log(n)).
Entretanto,aoperaodedeleobastanteineficiente.

FabianoBaldo UDESC

FabianoBaldo UDESC

11/6/2008

Declaraes
Existem4tiposbsicosdedeclaraes:
1. DeclaraodeConstantes: Ex.emC: 2. DeclaraodeTipos: Declarao type em Pascal: Declaraotype emPascal: Ex.emC:

Declaraes
3. DeclaraodeVarivel: 4. DeclaraodeProcedimentoseFunes: Ex.emC:

Declaraostruct eunion emC:

FabianoBaldo UDESC

FabianoBaldo UDESC

DeclaraodeConstantes
DeclaraodeConstante=Associaodevaloresanomes(ou seja,ligaoentrevalores) Valoresdeumaconstante:
OPascalnecessitaqueosvaloresnadeclaraodeumaconstante sejamestticos j Cpermitequeasconstantessejamdinmicas(somentecomputveis duranteaexecuo)umanicaatribuio.

DeclaraesdeTipos
Declaraesdetipos=associaodeumnomea umatipoconstrudorecentementeoucriaodeum alias paraumtiponomeadoexistente. Nomesdetipossocomumenteutilizadosem conjuntocomumalgoritmodeequivalnciadetipo pararealizaraverificaodetipodeumprogramade acordocomasregrasdaliguagem.

Tiposdeumaconstante:
EmPascal,tiposdedadosdeconstantessoimplicitamente determinadosdeseusvaloresestticos EmC,ostiposdedadossoprovidosexplicitamente,assimcomoem declaraesdevariveis.
FabianoBaldo UDESC 9

FabianoBaldo UDESC

10

DeclaraodeVariveis
DeclaraodeVariveis=associaodeumnomeaumtipo dedado. Declaraodevarivelpodetambmassociaroutrosatributos implicitamente. O escopo de uma declarao define a regio do programa Oescopo deumadeclaraodefinearegiodoprograma ondeadeclaraoaplicada,ouseja,ondeavariveldefinida peladeclaraoacessvel.
indicadopelaposiodadeclaraodentrodoprograma. Podeserafetadopornotaessintticasexplcitaseinteraescom outrasdeclaraes.

DeclaraodeVariveis
EmC,todasasvariveiscujaasdeclaraessoexternasa funessoalocadasestaticamente eassimtemtempode vidaigualaodoprogramaprincipal. EmC,todasasvariveisquesodeclaradasdentrodefunes soalocadasapenasparaaduraodecadachamadade funo(chamada,alocaoautomtica). OCtambmpermiteparaotempodevidadeumadeclarao dentrodeumafunoseralteradodeautomticapara estticoatravsdousodapalavrareservadastatic na declarao,talcomo:

Otempodevidadadeclaraodefineaduraodaalocao dememriaparaumavariveldeclarada.
FabianoBaldo UDESC 11 FabianoBaldo UDESC 12

11/6/2008

DeclaraesdeVariveis
Consideraessobredeclaraodevariveis:
int a,b[100]; =>definea eb ealocamemriaparaeles. static int a,b[100]; =>declaraasvariveislocaisparao procedimento,maselasnosocolocadasnapilhado procedimento. di t extern int a,b[100]; =>informaocompiladorqueo ligador irencontrarestasvariveisalocadaseinicializadas emoutrapartedoprograma. register int x;=>alocaavarivelemumregistroaoinvs damemria.

RegradeEscopoeEstruturade Blocos
Asregrasdeescopoemlinguagensdeprogramao variamuito,entretantoexistemalgunsemcomum, taiscomo:
Declaraoantesdouso Regradeaninhamento maisprximoparaestruturado bloco.

FabianoBaldo UDESC

13

FabianoBaldo UDESC

14

DeclaraoantesdoUso
Adeclaraoexplcitaantesdousoajudao programadorareduzirerrosderefernciadetipo. Istosimplificaaoperaocomatabeladesmbolos, poistornamaisfciladetecodevariveisqueno foramdeclaradas. Elatambmhabilitaumacompilaoemumanica passada. Linguagemondedeclaraoexplcitaeantesdouso nosoexigidas,nopodemserfacilmente compiladasemumnicopasso.
FabianoBaldo UDESC 15

EstruturadeBlocos
Umblocoemumalinguagemdeprogramao qualquerconstruoquepossaconterdeclaraes. Ex:
EmPascal:Programaprincipal,declaraode procedimentosefuneseregistros. EmC:Unidadesdecompilao(arquivosdecdigo), declaraesdeprocedimentosefunes,declaraes compostas(comoseqnciasdedeclaraesentre chaves),estruturaseunies, Emlinguagensorientadasaobjetos:classes.

FabianoBaldo UDESC

16

EstruturadeBlocos
Umalinguagemestruturadaemblocosse:
Permitiroaninhamento deblocosdentrodeoutrosblocos. Eseoescopodasdeclaraesemumblocoforlimitadoa aqueleblocoeaosblocosnelecontidos.

Exemplo1
Oint inolocalnopodeser alcanadodedentrodadeclarao compostadafunof,isso chamadoburacodeescopo. Oint jnolocalpodeseralcanado dedentrodadeclaraocomposta dafunof,masnodedentrode umdeseusdoisblocos. EmPascalasfunespodemser aninhadas,complicandooambiente emtempodeexecuo.

Regradoaninhamento maisprximo:dadas diversasdeclaraesdiferentesparaomesmonome, adeclaraoqueseaplicaaumarefernciaaquela noblocodeaninhamento maisprximoreferncia.

FabianoBaldo UDESC

17

FabianoBaldo UDESC

18

11/6/2008

Exemplo2
EssecdigoPascalrefleteuma estruturadetabeladesmbolos queoexemplo1.Entretanto, duranteotempodeexecuo umproblemadeacessoe p escopoaparece,dadoquef,ge hpodemserchamadasumas pelasoutrasdevriasformas diferentes.

Implementao
Paraimplementarosescopoaninhadoearegrade aninhamento maisprximo,aoperaoinserirdatabelade smbolosnopodesobrescreverdeclaraesanteriores,mas deveocultlastemporariamenteparaqueaoperao verificar encontreapenasadeclaraoinseridamais f p recentemente. Demaneirasimilar,aoperaoremovernopoderemover todasasdeclaraesquecorrespondamaumnome,mas apenasamaisrecente.

FabianoBaldo UDESC

19

FabianoBaldo UDESC

20

Implementao
Aconstruodatabeladesmbolospodeacontecera seguinteforma:
Realizeoperaesinserirparatodososnomesdeclarados aoentraremcadablocodecdigo. Realizeoperaesremover correspondentesparaos mesmosnomesdeclaradosaosairdecadabloco.

Implementao
Umaimplementaopossvelparaescopoaninhado:
Construirumanovatabeladesmbolosparacadaescopo Vincularessastabelasdeescopomaisinternocomomais externo. Dessaforma,aoperaoverificar continuaautomati camente abuscaemumatabelamaisexternaseno conseguirencontrarumnomenatabelacorrente.

Atabeladesmbolossecomportacomoumapilha duranteoprocessamentodeescoposaninhados.

Utilizandoestaabordagem,abandonaroescopo requermenoresforo,poisasdeclaraesno precisamserremovidasumaauma.


21 FabianoBaldo UDESC 22

FabianoBaldo UDESC

Implementao
Paraaconstruodetabelasdiferentesparaconter informaesdeescoposdiferentessonecessrias duasnovasoperaes:
Abrirescopo:Deveserexecutadasemprequeseentraem umnovobloco.Seuresultadoacriaodeumanova tabeladesmbolosparacadanovoblocoeacolocaono topodapilha. Fecharescopo:Executadasemprequesesaideumbloco. Suafunoapagarocontedodatabeladesmbolosdo blocoetirladotopodapilha.

Implementao
Utilizandoaalternativadeimplementar aninhamento deescopoemumamesmatabelade smbolos.
necessriaaidentificaodecadaespocoporumnome eoprefixodecadanomedeclaradodentrodeumescopo comosnomesacumuladosdeseusescoposaninhados. Adicionalmente,podesernecessrioatribuirumnvelde aninhamento ouprofundidadedeaninhamento acada escopoeregistraremcadacluladatabeladesmboloso nveldeaninhamento decadanome.

FabianoBaldo UDESC

23

FabianoBaldo UDESC

24

11/6/2008

InteraoemDeclaraesdo mesmoNvel
Umrequisitotpicodaslinguagensano reutilizaodomesmonomeemdeclaraesde mesmonvel. Portanto,oexemploemC:
Develevaraumerrodecompilao.

InteraoemDeclaraesdo mesmoNvel
Umaquestomaisdifcildeseresolveraseguinte:

Qual o valor impresso por j? i 2 ou 3

Esteerrodetectadoutilizandoatabeladesmbolos
Atabeladesmbolosnopodepermitirqueumavarivel sejainseridamaisdeumavezparaumdadonvel. Ovalorimpressoporj3porqueasdeclaraesno processadasseqencialmente. Algumasling.permitemdeclaraescolaterais,nessecassoo valordejderivadodoiexterno,porqueoiinternoainda noconhecido.
25 FabianoBaldo UDESC 26

FabianoBaldo UDESC

InteraoemDeclaraesdo mesmoNvel
Htambmocasodasdeclaraesrecursivas,emqueas declaraespodemseautoreferenciaroureferenciaroutras declaraes.

InteraoemDeclaraesdo mesmoNvel
Emcasosmaiscomplexos,podesetergruposdefunes mutuamenteexclusivas. Nestecaso,umadeclaraodeprottipodefuno necessriapararesolveroproblema,talcomoemC:

Nestecaso,onomedafunogcd deveseradicionadoa tabeladesmbolosantesdocorpodafunoserprocessado, senoafunonoserconhecidaquandoocompilador encontrarasuachamadarecursiva.

Essadeclaraovistacomoummodificadordeescopo,que estendeoescopodonomeg paraincluirf.


FabianoBaldo UDESC 28

FabianoBaldo UDESC

27

You might also like