Vous êtes sur la page 1sur 17

Gerador de Analisadores Lxicos

Prof. Andr Luis Meneses Silva alms@ufs.br www.dsi.ufs.br


1

Antes de Comear

Instalar a JDK Instalar o Eclipse IDE (JDT) Instalar o JFLEX e o CUP Instalar o JFLEX e CUP Plugin

http !!cup"le#"eclipse$source%orge$net!up&ate

JFlex: Um gerador de Analisadores Lxicos


Per(ite especi%icar analisa&ores l)#icos *era u( analisa&or l)#ico+ escrito e( Ja,a -ers.o (o&erna &o Le# e ,ers.o e%iciente &e JLe#
JFLEX 0nalisa&or L)#ico (Yylex. ava) !om"ilador Java # ava$%

Especi%ica/.o L)#ica

0nalisa&or L)#ico (Yylex.$lass)

'

Especificaes JFlex
1. cdigo do usurio && 2. diretivas do JFlex e definies regulares && 3. regras

C2&igo &o Usu3rio pac4age e i(ports De%ini/.o &e classes utilit3rias Direti,as Custo(i5a/.o &a classe parser gera&a$ De%ini/6es regulares au#iliares 7egra

Exemplo
'' !(di)o do usu*rio "a$+a)e exem"lo.lex, im"or- exem"lo.-o+en.., && ''/ire-ivas do Jflex &fun$-ion "roximo0o+en &-y"e 0o+en

Exemplo
''!(di)o in$lu1do a $lasse do "arser. &2"riva-e 0abelaSimbolos -abela, "ubli$ Yylex#-abelaSimbolos -abela% 2 -3is.-abela 4 -abela, "riva-e in- ins-alar5d#S-rin) id% 2...6 ''ins- na -abela &6

Exemplo
''defini78es re)ulares auxiliares delim49: :-:n:r; ws42delim6< le-ra49a=>A=?; di)i-o49@=A; id42le-ra6#2le-ra6B2di)i-o6%. numero42di)i-o6< #:.2di)i-o6<%C #E9<:=;C 2di)i-o6<%C

Exemplo
''De)ras && 2ws6 26 if 2re-urn new 0o+en#sym.5F%,6 2id6 2in- i 4 ins-alar5d#yy-ex-#%%, re-urn new 0o+en#sym.5/Enew 5n-e)er#i%%,6 2numero6 2re-urn new 0o+en#sym.FGME new /ouble#yy-ex-#%%%,6 HIH 2re-urn new 0o+en#sym.L0%,6 HI4H 2re-urn new 0o+en#sym.LE%,6 ... ... . 2sys-em.ou-."rin-ln#H$ara$-. des$on3e$idoH%,6

<

Como feito o casamento


1$ > escolhi&o o to4en &e (aior ta(anho poss?,el$
@ Ae h3 (ais &e &ois+ o pri(eiro na listage( ) escolhi&o
B E#$ pala,ras reser,a&as &e,er.o ser lista&as pri(eiro para n.o sere( CocultasD por 2id6

1$ > e#ecuta&a a a/.o associa&a$

Expresses Regulares no JFlex


Fetacaracteres C.<B#%JK',.4IL 9;26H:MN precisa( ser escapa&os co( aspas ou G E#pres6es regulares O e f+ e B f+ e.+ e<+ eC e #e% significado normal O :b, :nE :-E :fE :rE :udddd, \., \\, \$, .... O K fim de linha

O . tudo menos :n O H....H string sem escape, exceto para H e \ O 2nome6 macro O 9bde:n;E 9a=>A=?;E 9a=>@=A; 9Ja=>; '' 0udo $om ex$e7Po de a=> @ classes de caracteres

1E

Exemplo: Coment rios


H'.H 9J;. H.'H FuncionaH 2 '.nPo fa7a nada .'6

Iutro tentati,a H'.H 9J.;. H.H #9J'; 9J.;. H.H%. H'Q A-ividade R valendo "on-o "ara "ro e-oS Desolver esse "roblema "ara a "r(xima aula.

11

!utros operadores do JFlex


0 nega/.o &e u(a e#p$ reg$ Me Casa co( to&as as ca&eias Jue n.o casa( e I opera&or upto Ne Casa tu&o at) a pri(eira ocorrKncia &e e (incluin&o) Ne eJui,ale co( M#9J;. e 9J;. B HH% e E#e(plo &os co(ent3rios H'.H NH.'H

Cui&a&o nega/.o e upto s.o (uito ine%icientes (na gera/.o)


12

Estados

Fistura &e E#p$ 7eg$ co( esta&os (autL(atos) Especi%ica/6es (ais operacionais Mo entanto+ as ,e5es (ais a&eJua&as$ I!TMMEF0L 2 H.'H 2yybe)in# YY5F505AL% , 6 9J; 2 '.nada.' 6 6 I/T!=!TMMEF0L 2 Q@"aramH 2.... 6 ... 6
1'

IYY5F505ALL 2 if 2re-urn new 0o+en...6 2id6 2re-urn new 0o+en ... 6 H'.H 2yybe)in#!TMMEF0%,6 H'..H 2yybe)in# /T!=!TMMEF0%,6 ... 6

Exerc"cio

0ti,i&a&e 2 -alen&o ponto para o pro8eto$ Co(o po&eria especi%icar co(ent3rios aninha&os usan&o esta&osH

11

! operador de loo#a$ead
e'f Casa u( e #onde e uma ex"ressPo re)ular% segui&o &e u( f$ I te#to relati,o ao f n.o ) consu(i&o eK Casa co( e segui&o &e #o"erador de fim de lin3a%.

Ipera&or ine%iciente (na e#ecu/.o)

19

!utras ferramenta alternati%as

Le#

Pri(eira %erra(enta neste estilo$ *era C e CNN *era&or &e 0nalisa&or L)#ico e Aint3tico (2 e( 1)$ CI%icialD &a Aun$ Ainta#e &as e#p$ regulares &i%erente$ Po&er &e e#press.o eJuipar3,el$ 2 e( 1

J0-0CC

AaOleCC

1:

&arefa

0ti,i&a&e ' (,alen&o ponto para o pro8eto)$ De%inir para a linguage( &a Plti(a aula o analisa&or l)#ico$ To4ens

i%+ i&enti%ica&ores+ liteirais nu()ricos+ opera&ores e &eli(ita&ores$ -er sli&e le#ico$ppt Entrega &as ' ati,i&a&es (E<!set)$

1;

Vous aimerez peut-être aussi