Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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]