Você está na página 1de 32

Compiladores Compiladores AnliseSinttica

FabianoBaldo

GramticasLivredeContexto(GLC) Gramticas Livre de Contexto (GLC)


ili d utilizadanaespecificaoformaldasintaxedeuma ifi f ld i d linguagemdeprogramao. umconjuntodeproduesouregrasgramaticais j d d i i daseguinteforma: AX A X1 X2 Xn AproduotemexatamenteumsmboloA dolado esquerdo. d PodeterzerooumaissmbolosXi doladodireito. Porexemplo,umaclausulawhile definidadesta forma:
FabianoBaldo UDESC 2

GramticasLivredeContexto Gramticas Livre de Contexto


D i i DoistiposdesmbolospodemapareceremumaGLC: d b l d GLC
Noterminais:Soelementossubstitudospelolado direitodasprodues,quandoaparecemdolado direito das produes quando aparecem do lado esquerdo. Terminais:Representamasmarcaesdeumalinguagem p g g (outokens).

Umagramticalivredecontextodefineuma linguagem:
Estelinguagemumconjuntodestrings(seqncia)de tokens ( k (terminais) i i) Cadastringdetokens derivadadeumaregrade produo. produo
FabianoBaldo UDESC 3

GramticasLivredeContexto Gramticas Livre de Contexto


Ex:Considereaseguintegramticasimplificadapara expresses:

FabianoBaldo UDESC

Derivao
Umaderivaoumaseqnciadesubstituiesde noterminaisporumaescolhadasregrasde produogramaticais. Aderivaoomtodoutilizadoparaaconstruo deumacadeiaespecficadeterminais,partindode umnoterminalinicial. Emgeral,existemvriasderivaesparaa construodamesmacadeiadenoterminais.

FabianoBaldo UDESC

Derivao
Verificarseaseqnciadetokens reconhecida:
Iniciasecomosmbolonoterminalchamadoraiz; Aplicaseprodues,substituindonoterminais,at somenterestaremterminais; Umaderivaosubstituiumnoterminalpeloladodireito deumadesuasprodues; O b l Osmbolodenotaumpassodederivao. d d d i

FabianoBaldo UDESC

Derivao
Ex:Derivaodacadeia(num+num)*num apresentadaabaixo:

FabianoBaldo UDESC

DefinioFormaldeGLC Definio Formal de GLC


UmaGramticalivredecontextoconsisteem:
Umconjuntofinitodeterminais T Umconjuntofinitodenoterminais N (disjuntodeT) UmsmboloinicialS N UmconjuntodeproduesouregrasgramaticaisP Umaregradeproduodaforma:tal quee Umproduocomzerosmbolosnoladodireito(n=0) daforma: Uma produo tambm escrita como:,tal que
FabianoBaldo UDESC 8

LinguagemdeumaGramtica Linguagem de uma Gramtica


AlinguagemdeumagramticaG Osmbolodederivaopodeserestendido:
:Derivadoemumoumaispassos :Derivadoemzerooumaispassos p

Freqentemente,maisdeumaproduo compartilhamomesmoladoesquerdodaproduo compartilham o mesmo lado esquerdo da produo


o mesmo que: omesmoque:

FabianoBaldo UDESC

DerivaomaisEsquerdaemais Direita
Derivaomaisesquerdadeumasentenaa seqnciadeformassentenciaisqueseobtm derivandosempreosmbolonoterminalmais esquerda; Derivaomaisdireitaaseqnciadeformas sentenciaisqueseobtmderivandosempreo smbolonoterminalmaisdireita;

FabianoBaldo UDESC

10

DerivaomaisEsquerda Derivao mais Esquerda


Ex:(num+num)*num

FabianoBaldo UDESC

11

DerivaomaisDireita Derivao mais Direita


Ex:(num+num)*num

FabianoBaldo UDESC

12

PropriedadesdeGLC Propriedades de GLC


Gramticasemciclos:umagramticaqueno possuiderivaodaforma: Gramticascomproduo:uma gramtica que possui produo dotipo A Gramtica recursiva esquerda:uma gramtica que permite derivao dotipo: pe e de ao do po Gramticarecursivadireita:umagramticaque permitederivaodotipo: permite derivao do tipo:

FabianoBaldo UDESC

13

PropriedadesdeGLC Propriedades de GLC


ArecursividadeemGCLimportante,poisa repetiopoderserconstrudaatravsdarecurso. As produes so tambm teis para definir As produes estruturas opcionais da linguagem.

FabianoBaldo UDESC

14

ArvoredeAnliseSinttica Arvore de Anlise Sinttica


Umarvoredeanlisesintticaumarvore rotuladacujosnsinterioressorotuladosporno terminais,josnsfolhasorotuladospor terminais. Osfilhosdecadaninternorepresentama substituiodonoterminalassociadoemumpasso dederivao.

FabianoBaldo UDESC

15

ArvoredeAnliseSinttica Arvore de Anlise Sinttica


umarepresentaogrficadaderivaodeuma sentena,que:
Filtraasescolhaslevandoemconsideraoaordemde substituio; TemcomoraizdarvoreonoterminalinicialS NsinternosrepresentamnoterminaispertencentesaN NsfolhassoterminaisemT ou OnApodeterfilhosseexistiraregra

FabianoBaldo UDESC

16

ArvoredeAnliseSinttica Arvore de Anlise Sinttica


Ex:(num+num)*num

FabianoBaldo UDESC

17

EnumeraoPrordemePs ordem
Umarvoredederivaopodeserconstrudade derivaesesquerdaoudireita. Derivaesmaisesquerdaproduzemumarvore enumeradaemprordem. Derivaesmaisdireitaproduzemumarvore e u e ada e ps o de enumeradaempsordeminvertida. e da Enumeraoprordemcorrespondeaoparsing top down Enumeraopsordemcorrespondeaoparsing bottonup. botton up
FabianoBaldo UDESC 18

EnumeraoemPrordem Enumerao em Pr ordem

FabianoBaldo UDESC

19

EnumeraoemPsordem Invertida

FabianoBaldo UDESC

20

rvoreSintticaAbstrata rvore Sinttica Abstrata


Umarvoredeanlisesintticacontmmuitomais informaoqueonecessrioparaumcompilador gerarcdigoexecutvel. Umarvoresintticaabstratapodeserentendida comoumarepresentaoemformadervorede umanotaosimplificada.

FabianoBaldo UDESC

21

rvoreSintticaAbstrata rvore Sinttica Abstrata


Ex:(3+4)*2

FabianoBaldo UDESC

22

rvoreSintticaAbstrata rvore Sinttica Abstrata


Oprincpiodatraduodirigidaporsintaxe estabelecequeosignificadodasentenaest diretamenterelacionadoasuaestruturasinttica representadanarvore. Assim,aposioquecadatoken narvoreindicasua relaocomosoutrostokens reconhecidos.

FabianoBaldo UDESC

23

GramticaAmbgua Gramtica Ambgua


umagramticaquepermiteconstruirmaisdeuma rvoredederivaoparaumamesmasentena. Istorepresentaumproblemaparaoanalisador sinttico,poiselanoespecificacomprecisoa estruturasintticadoumprograma. s e p ob e a pode se co pa ado ao dos Esteproblemapodesercomparadoaodos autmatosnodeterminsticos,ondedoiscaminhos p podemaceitaramesmacadeia.

FabianoBaldo UDESC

24

GramticaAmbgua Gramtica Ambgua


Aeliminaodeambigidadenotosimples comoaeliminaodenodeterminismoem autmatos. Existemduasmaneiras:
Estabelecerumaregraqueespecifiqueacadacaso ambguoqualocaminhocorreto.(Semalterara gramtica) Alteraragramticaparaforaraconstruodarvore sintticacorreta,removendoaambigidade. i i d bi id d

FabianoBaldo UDESC

25

GramticaAmbgua Gramtica Ambgua


Infelizmentesissonogarantequeagramticano possuiambigidade.

FabianoBaldo UDESC

26

EliminaodeAmbigidade Eliminao de Ambigidade


Paratrataroproblemadeambigidadeem gramticasoutilizadososconceitosdeprecedncia eassociatividade. Elesespecificamumaordemnaavaliaodos operadores. Ope ado es co a o p eced c a so a a ados Operadorescommaiorprecednciasoavaliados primeiro. Operadorescomigualprecednciasoavaliadosde Operadores com igual precedncia so avaliados de acordocomaassociatividade(esquerdadireita, direta esquerda). diretaesquerda)
FabianoBaldo UDESC 27

EliminaodeAmbigidade Eliminao de Ambigidade


Paratrataraprecednciadosoperadores:
Divideseosoperadoresemgruposdeigualprecedncia Paracadanveldeprecedncia,introduzseumno terminaleumaregragramatical

Paratrataraassociatividadedosoperadores:
Criaseregrasgramaticaisqueserorecursivasdireitaou esquerda.

FabianoBaldo UDESC

28

EliminaodeAmbigidade Eliminao de Ambigidade


Gramticaparaexpressessemambigidade

FabianoBaldo UDESC

29

AmbigidadedadeclaraoElse Ambigidade da declarao Else


Consideraaseguintegramticaparaadeclaraodo If

FabianoBaldo UDESC

30

AmbigidadedadeclaraoElse Ambigidade da declarao Else


Existemduasrvoresdederivaopara: Asduasrvorestraduzemdiferentementeaparte else:

FabianoBaldo UDESC

31

EliminaodaAmbigidadedoElse Eliminao da Ambigidade do Else


Aeliminaodaambigidadepodeserfeitadessa forma:

Estaregradenominadaderegradeaninhamento comomaisprximo;

FabianoBaldo UDESC

32

Você também pode gostar