Sei sulla pagina 1di 26

ProyectofinaldeTeoradelaComputacin

ProyectofinalTeoradelacomputacin

Objetivos:
DisearunAnalizadorLxico.
ConocerlaestructurainternadeunaAnalizadorLxico.

ImplementarunAnalizadorLxicoparareconocercdigofuenteparaelprograma
PseInt.
pseint
.sourceforge.net

Tabladecalificacin
Item

Apartado

Descripcin

Anlisis

Describirlasexpresionesregulares

ProcesosAFN

GenerarunAFNapartirdelase.r.

ProcesoAFD

ImplementarunAFDapartirdelAFN

ProcesoAFDmnimo

MinimizarelAFD

Programacin

Usarunaherramientaparacrearel
AnalizadorLxico(JavasourceyJava
JAR)

Presentacinporelformulario:
http://goo.gl/forms/InmE1B9aqp
FechalmiteViernes24hastalas11:59:59p.m.

ndicedelosapartadosdeldocumento
ElAnalizadorLxico
HerramientasparagenerarAnalizadoresLxicos

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

Puntos

TOTAL

20

ProyectofinaldeTeoradelaComputacin

Marcoterico:

El Analizador Lxico
Lafuncinprimordialesagruparcaracteresdelaentradaentokens.
Estostokenssonsuministrados(bajodemanda)alanalizadorsintctico.

Lostokenssepasancomovaloressimples

Algunostokensrequierenalgomsquesupropiaidentificacin:
constantes:suvalor
identificadores:elstring
operadoresrelacionales:suidentificacin

Porlotanto,elscannerdeberealizar,aveces,unadoblefuncin:
identificareltoken
evaluareltoken

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Esquemadeprocesamiento

Algunasdefiniciones

token
nombrequesedaacadacomponentelxico

lexema
Secuenciadecaracteresdelaentradaquecorrespondenauntoken

patrn
Formacompactadedescribirconjuntosdelexemas

Adems
untokensecorrespondeconunpatrn
untokensepuedecorresponderconmuchoslexemas

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Tokensmshabituales
palabrasreservadas
identificadores
operadores
constantes
smbolosdepuntuacin:,.:
smbolosespeciales:()[]

Pero,alavezqueelpropiotoken,elscannerpuede(debe)devolvermsinformacin
siesuntokenCONSTANTE,suvalor
siesunidentificador,elstringcorrespondiente
siesunsmbolodepuntuacin,cul

Estainformacin,sedevuelvemedianteatributos
Peroanpuedehaceralgoms:
puededetectaralgunos(pocos)erroreslxicos
nohayconcordanciaconningnpatrn
puedellevaracaboalgunasrecuperacionesdeerrores
filtradodecaracteresextraos
completaralgnpatrn
reemplazaralgncarcter

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Procesodeconstruccin(conayudadeherramientas)

Qupintatieneunscanner?
un conjunto de funcionesuna para cada smbolo a reconocerestas funciones son
controladas/invocadasporunafuncinque:
selecciona,enfuncindeloscaracteresdeentrada,qufuncininvocar

Opcionalmente,tambinmediantetablas
Peropuedesercomplicado:
necesidadderecorrervarioscaracteresantesdedecidireltipodetoken
preanlisislookahead
Ejemplo:
reconocido<enC,puedecorrespondera

MENOR
<

MENOR_O_IGUAL<=

SHIFT_LEFT<<
IFvs.IFNI

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Operadoressobrelenguajes:
SeanL,Mdoslenguajes

Para un token dado, los lexemascorrespondientes losexpresaremosmedianteexpresiones


regulares
Expresinregular:formacompactaparadefinirunlenguajeregular
tambinllamadoconjuntoregular

Unaexpresinregularr:
SerdefinidaapartirdellenguajeL(r)quegenera
operadoressobreexpresionesregularesmedianteoperadoressobrelenguajes

Seaunalfabeto

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Importante:Darlaposibilidaddelusodeparntesisparaestablecerprioridades
til,usarprioridades:

Ejemplo1:Sea={a,b}

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Ejemplo2:
Sea={0,1}

Yasabemosexpresarloslexemascorrespondientesalostokens
Necesitamosimplementarelanalizadorlxico
Esquemaparasuimplementacin

AutmatasFinitos.Generalidades
Los autmatas finitos pueden ser utilizados para reconocer los lenguajes expresados
medianteexpresionesregulares
Un autmata finito (AF)esunamquinaabstractaquereconocestringscorrespondientesa
unconjuntoregular
Tambinsedenominanreconocedores

MisindeunAF:
reconocersi un string de entrada respeta las reglas determinadas por una expresin
regular

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Ejemplo:
e.r.:(ab|c)*d
autmata?

Notacingrfica:

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

AFNcomografodetransiciones

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

ConversindeunaexpresinregularaAFN
Objetivo:dadaunaexpresinregular,generarunAFDquelareconozca
Mtodo:construccindeThompson(BellLabs.)

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Ejemplo:procesodeconstruccinpara
(ab|c)*d

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

SobreimplementacindeAL

Unanalizadorlxicomuysimple

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Herramientas para generar Analizadores Lxicos


ElpasodeunaexpresinregularaunAFsepuedehacerdemaneraautomatizada.
Tambinexistengeneradoresdeanalizadoreslxicos.

QuhaceLEX?
Especifica un analizador lxico. Flex es una herramienta que permite generar analizadores
lxicos. A partir de un conjunto de expresiones regulares (patrones lxicos), Flex busca
concordanciasenunficherodeentradayejecutaaccionesasociadasaestasexpresiones.

FLEX :EspecificaunanalizadorlxicoenC.
JFlEX :EspecificaunanalizadorlxicoenJAVA.

FLEX,JFLEXsiguenunesquema

Donde
:
Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

patrn:expresinregular
accin: fuente C,JAVA con las acciones a realizar cuando el patrn concuerde con un
lexema

Funcionamiento:
FLEXrecorreentradaestndarhastaqueencuentraunaconcordancia
Un lexema correspondiente al lenguaje de algunas de las e.r. representadas por los
patrones
Entonces,ejecutaelcdigoasociado(accin)
Permite acceder a la informacinasociada allexema(string,longituddelmismo,ndelnea
enelfuente,...)

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Ejemplo:

Tokens,lexemasypatroneslxicos
Token:cadaunodeloselementosreconocidosporelanalizadorlxico
Lexema:secuenciadecaracteresdelaentradaquecorrespondenauntoken
Patrnlxico:formacompactadedescribirconjuntosdelexemas

Token1
:1patrn
Token1
:Nlexemas

Lostokenssepasancomovaloressimples
Peroalgunosrequierenalgomsdeinformacin:
Ej: paraunaconstante,habitualmentenoslosenecesitasaberqueesunaconstantesino
tambinculessuvalor

Expresionesregulares
Definicinformaldeloslexemasquecorrespondenauntoken
Permitir decidir cundo se reconoce un token a partir de una secuencia de elementosde
laentrada
Sepuedenbautizarparapoderreferenciarlasposteriormente

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

ComoeselcomportamientodeunAnalizadorLxico
Paralaexpresinaevaluarcreaunalistacompuestaporlexemaydescripcin.
Ellexemaesporlostokensyladescripcineelvaloronombre.

EstructuradelarchivoFLEX

Seccindedefiniciones:
bloquesliterales
secopiantalcualalfuentelex.yy.coalaclasejavaquesegenerar(JFLEX)
entre%{y%}
definicionesregulares(bautismo)
declaracionespropiasparaelmanejodetablasdeLEX
condicionesiniciales
cambiarelfuncionamientodelreconocedor

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Seccindereglas
Formato:

dostiposdelneas:
empiezanporblanco,%{%}fuenteC
empiezanporotracosa:lneapatrncdigo
laslneasdefuenteCsecopiandirectamenteenelfuentelex.yy.c
alencontrarconcordancia,ejecutarcdigoasociado
sinoencuentraconcordancia,ejecutaECHO(copiaellexemaensalidaestndar)

Seccinderutinasdeusuario
sucontenidosecopialiteralmenteenelfuentelex.yy.c
contienefuncionesCescritasporelusuarioynecesariasparaelanalizador
manejodetabladesmbolos
generacindesalidas(cuandonoesnecesariogeneracindecdigo)

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Ejemplo:

Tambinsepuedendarnombresaexpresionesregulares

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

ExpresionesregularesenFlex

Qupasacuandohayambigedad?
FLEXaplicadosreglas:

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Accediendoallexema
yytextcontieneunpunteroglobalallexemareconocido
yylengcontienelalongituddellexema
Hayotrasms:yyin,yyout...
Tambinhayfunciones:yylex(),yywrap(),yymore(),yyless(),yyterminate()...

Ventajasdeusarestosgeneradores
Elcdigoquedamselegante
Estonospermitirenlazarelanalizadorlxicoconelsintctico(Yacc/Bison)deunmodo
mssimple

Consideracionesatenerencuenta
Sermuyrigurosoconlaestructura:
Sicomienzaporblanco,yanoeslneadepatrnaccin
Definirclaramentelastreszonasdelimitadaspor%%
Tenercuidadoconlosanidamientosde(),[],{}
Tenerpresentelaformaderesolucindemltiplespatronescoincidentes
Eligeelqueconcuerdaconelstringmslargo
Silospatronesreconocenelmismostring,eligeelqueapareceprimeroenlas
declaracionesFlex
Seguirprincipiodivideyvencers
Sifallaelanalizadorlxico,lomssimpleesireliminandopatrnaccinhastalocalizarel
conflictivo
SeguirprincipioKISS(Keepitsimple,stupid!)
PensarmuybienlasE.R.autilizarpuedesimplificarmucholatarea
Tenerpresenteladiferenciaentremaysculasyminsculasdeloslexemas:
Complicaraelcdigoconunmontnde[aA][nN][dD]...
Seresuelveconflexi

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

ProyectofinaldeTeoradelaComputacin

Enlaces

URLparaenvodeltrabajo.
http://goo.gl/forms/kXkSQaYX9z

https://sites.google.com/site/teorialacomputacion/home/analizadorlexico

http://pseint.sourceforge.net/

Prof.RichartEscobedo(
richarteq@dlince.com
)[UNSATC]

Potrebbero piacerti anche