Você está na página 1de 7

TrabalhodeImplementaodeAnalisadorLxico

Parte1
Nestapginaestodetalhadososprocedimentosquedevemserseguidospara
odesenvolvimentodoTrabalho1dadisciplinadeCompiladoresI.Este
trabalhoserdesenvolvidoaolongodestesemestreletivoeconstituircomo
partedanotafinaldareferidadisciplina.fortementerecomendadoqueos
estudantesacessemcomfreqnciaestapginapara:esclarecerpossveis
dvidas,estarcientedocronograma,estarapardepossveis
atualizaes/alteraesnotrabalho.

Objetivos:ProjetareImplementarAnalisadorLxico(ParteI)paraumsub
conjuntodalinguagemPascal.Paratanto,utilizealinguagemJavaetome
comobaseasaulastericaseprticasdocursodeCompiladoresIato
momento.

Oquedeveserfeito?

1. ConstruiraclasseAnaLexemtodosparaanliselxica.Pelomenosum
mtodo(AnaLex)deveexistir.
1. Omtododevelerocontedodoprogramapassadocomoparmetro
eretornarostokensencontrados.

2. Controlaranumeraodaslinhasassimcomodeveseignorar
comentrios.Paracadatokenreconhecido,deveserpossvelexibir:
<Numerodalinhadotoken,Token,Atributo(quandopossuiratributo)>
3. ObservequeomtodoAnaLexretornaumtokensemprequefor
chamado.Essemtodonodeveescreverotokennatela,massim
produzirumtokenparaumoutromtodo(mtodomain,porexemplo)
queseroresponsvelpelasada
4. Aspalavraschavesoconsideradaspalavrasreservadas,i.e.nopodem
serutilizadascomoidentitificadores.Alistadepalavrasreservadas
dadapor:{AND,ARRAY,BEGIN,CASE,CONST,DIV,DO,
DOWNTO,ELSE,END,FOR,FUNCTION,GOTO,IF,LABEL,
MOD,NOT,OF,OR,POINTER,PROCEDURE,PROGRAM,
RECORD,REPEAT,SET,THEN,TO,TYPE,UNTIL,VAR,WHILE,
WITH}

5. Criaregerenciarumatabeladepalavrasreservadas(tabelahashou
vetordestrings)paraaspalavrasreservadasdalinguagem.Todavez
queumidentificadorforencontrado,deverserfeitaumabuscana
tabeladepalavrasreservadas.Umabuscacomsucessonessatabela
indicaqueumapalavrachavefoireconhecidaeentoseutokenser
retornado.Casocontrrio,umidentificadorfoireconhecidoeomesmo
deverserinseridonatabeladesmbolos,casoaindanotenhasido
inserido.

6. Implementartabeladesmboloscomoumatabelahashoutabelade
disperso.Quandoumidentificadorreconhecido,deveseinicialmente
fazerumabuscanatabeladepalavrasreservadasparaverificarseuma
palavrareservada.Casoabuscanotenhasucesso,devesefazeruma
novabuscanatabeladesmbolos,eretornarotokenassociado,casoo
identificadorsejaencontrado.Emcasonegativo,oidentificadordeve
serinseridonatabeladesmboloseentoretornarotokenassociado.

7. Pascalnofazdistinoentreidentificadorescomletrasmaisculasou
minsculas.ARRAYequivalentearray.Sugeresequetodasasletras
sejamconvertidasparaumadasduasformasantesdequalquer
comparao.

8. SeguirmetodologiaparaconvenodecdigoemprogramasJava
descritaaqui.

9. Definiesregularesparatokenssematributos:
assign_op>:= dotdot>.. dot>. colon>:

semicolon>; comma>, lb>[ rb>]

lp>( rp>) equal>= le><=

ge>>= ne><> gt>> lt><

divide>/ minus> times>* plus>+

simb_pointer>^ ender>@

10.Definiesregularesparatokenscomatributos:

letter>[_AZaz] digits>digit+ num>digits character>


optional_fraction {qualquercarac
optional_expoent doalfabeto}

digit>[09] optional_fraction> char1>{qualquercarac.do Comment>(*


(.digits)? alfabetomenos'\n'} character**)|
{char1*}

identifier>letter optional_expoent> string>'char1'


(letter|digit)* ((E|e)(+|)?digits)?

Obs:Notequeoreconhecimentodepalavrasreservadasserno
reconhecimentodeindentificadores(definioidentifier).

11.Delimitadores:

Delim>''|\t|\n ws>delim+

2. Implementarumanalisadorsintticopreditivorecursivodeacordocoma
gramticadominipascalespecificadaaqui.
3. Deveserconstrudoumanalisadorsintticodescendenterecursivosem
recuperaodeerros.Quandoumerrofordetectado,oanalisadordeveemitir
umamensagemdeerro,mostrandootipodeerrodetectadoealinhaqueo
erroocorreueterminaraexecuodoprograma.
Sugestodemetodologiaparadesenvolvimentodotrabalho

Trabalhocooperativoeparticipativoemdupla(ouindividual).Namedidado
possvel,utilizeametodologiaXPpararealizaodessetrabalho.

Faaoprojetodoanalisadorlxico.Organizeasclasses,atributosemtodos.
Lembreseque,maistarde,acrescentaremosumanalisadorsintticonesse
projeto!

Implementeoreconhecimentodeumtoken,faatestes,passeparaoprximo.
Fazendoisso,errossimplesdetectadosnessaimplementaonoserepetiro
nasprximas.

Noapagueosprogramasqueestcriandoparatestarseuanalisadorlxico.
Oconjuntodeprogramastestesdeveincrementardetamanhoamedidaque
novascaractersticassoimplementadas.

Utilizeocompiladorexemploquetemosadotadoemsaladeaulaparainiciar
oentendimentoe/ouaimplementaodoanalisadorlxico.

Faaoprojetodoanalisadorsinttico.Organizeasclasses,atributose
mtodos.Lembreseque,maistarde(prximosemestre),acrescentaremosum
analisadorsemnticonesseprojeto!

Naimplementaodoanalisadorsinttico,elaboreprogramasexemploque
exploremascaractersticassintticasdalinguagem.

Discussocomoutraspessoas(professoresealunosdo9sem.)afimde
entenderetirardvidasdeimplementao.

QualoCronograma?

11/03:Iniciodotrabalho.Observequeaolongodetodoosemestreteremos
aulasdedicadas,exclusivamente,aodesenvolvimentodoTrabalhoI.

10/04:1o.Checkpoint(ParteI):Ohorriodaaulaserdedicadopara
avaliaodoandamentodaParteI(AnalisadorLxico)doTrabalhoI.O
Professorfarentrevistascomcadagrupoprocurandosaberoquefoi
implementado,oquenofoiimplementado,quaissooscasosdetestes.Ser
pedidoparaogrupoexplicarpartesdocdigofonteacritriodoprofessor.
esperadoqueaduplatenhaimplementadoaclasseAnalexeosrecursosdo
AnalisadorLxico(>70%).

29/05:2o.(eltimo)Checkpoint(ParteII):Ohorriodaaulaserdedicado
paraavaliaodoandamentodaParteII(AnalisadorSinttico)doTrabalhoI.
OProfessorfarentrevistascomcadagrupoprocurandosaberoquefoi
implementado,oquenofoiimplementado,quaissooscasosdetestes.Ser
pedidoparaogrupoexplicarpartesdocdigofonteacritriodoprofessor.
esperadoqueaduplatenhaimplementadoaclasseParsereosrecursosdo
AnalisadorSinttico(>80%).

12/06:EntregaeApresentaodoTrabalho:

ComoseraavaliaodotrabalhonadisciplinadeCompiladoresI?

NAPCAvaliaesParciaisdosCheckpoints(presena,participao,
objetivoscumpridos,etc.)CadacheckpointterPeso1.5.

NImpImplementao(clarezadocdigo,comentrios,programasteste,
documentaogeraldocdigo)Peso4

NRelRelatrio(organizao,qualidadedaescrita,clareza)Peso3

NBBonus(participaonadisciplina,utilizao/demonstraode
ferramentas,qualidadedorelatrio,adoodeconvenodecdigo,destaque
emrelaoaosdemaistrabalhos)Peso1

Somadetodasasnotasanteriorescomseusrespectivospesos.Lembreseque
amdiafinaldadisciplinadadaporMF=(P1+P2+T1)/3
Dicas/Sugestes

ProcureentenderocdigoJavaqueutilizamosemaulasanteriores.Isso
ajudaradefiniroanalisadorlxico.

Inicieotrabalhooquantoantes.Otempovoa!

Nocopiecdigodeningum!Nunca,jamais.Seencontrarcdigo
semelhanteaoquevocdesejaimplementar,estudeo,entendao,masfaaa
suaprriaimplementao.

Perguntasfrequentes:

P:Sefaltarnodiadocheckpoint,ficacom0?

R:Hduaspossibilidades:1)Sesouber,previamente,queirfaltaremdiade
checkpoint,adupladeveavisaraoprofessorqueiragendarumhorrioanteriorao
diadocheckpoint.2)casoafaltasejadevidoaumimprevisto,adupladeve
procuraroprofessoredevejustificaraausnciae,apsisso,oprofessormarcar
umhorrioparaaentrevista.Faltassemjustificativa,recebero0comonotado
checkpoint.

P:Hpossibilidadedeadiaraentregadotrabalhoporalgunsdias?

R:No.Asdatasdeentregaestnolimitemximoaceitvel.Trabalhosentregues
foradoprazocorremosrioriscodenoseremavaliadose,nomelhordoscasos,
seroavaliadosmasosatrasosserodescontadosnovalordanota,deacordocom
critriosdefinidospeloprofessor.

P:Oquefazeremcasodedvidasnoentendimentodotrabalho?

R:Procureoprofessoroquantoantes:pessoalmenteouenviandomensagem
eletrnicacomsubject:"Dvidas:Trabalho1CompiladoresI".Nesseltimocaso,
procurediscorrersucintamenteasuadvida.Almdisso,aproveitebemos
encontrosdecheckpointeoshorriosdeatendimentodadisciplinapararetirarsuas
dvidasejustificarsuasescolhas.Issocontarnasuaparticipaoededicaodo
trabalho.

P:Oqueapresentareinodia12/06?

R:Nodia12/06osgruposapresentaroaoprofessoroquefoiimplementado,oque
nofoiimplementadoefaroumademonstraoprticadaimplementao.O
professorpoderpedirparaogrupoexplicarpartesdocdigofonteeexecutara
implementaoparaumconjuntodeentradasfornecidaporele.

P:Possoimplementarmeuanalisadorlxico/sintticoutilizandoumaferramenta
parageraoautomticodeanalisadoreslxico/sintticoemJavacomoJlexou
JFlex?

R:No.Ogrupofortementemotivadoautilizargeradoresautomticosde
analisadoreslxico/sintticoduranteocursoe/ouodesenvolvimentodotrabalho.
Noentanto,aimplementaodeveserfeitabaseandoseunicamentenosconceitos
vistosemsaladeaulaenosrecursosdalinguagemJava.

P:Seobternotamximaemtodosositensdaavaliaoficareicom11?

R:No.Anotamxima10!Almdisso,essespontosnosocumulativos.Isto,
noserousadosemArq.deComputadoresII.

Você também pode gostar