TC AnalizadorLexico
-
Author
hector-concha-ferxz -
Category
Documents
-
view
217 -
download
2
Embed Size (px)
description
Transcript of TC AnalizadorLexico
-
ProyectofinaldeTeoradelaComputacin
ProyectofinalTeoradelacomputacinObjetivos:
DisearunAnalizadorLxico. ConocerlaestructurainternadeunaAnalizadorLxico.
ImplementarunAnalizadorLxicoparareconocercdigofuenteparaelprogramaPseInt.pseint.sourceforge.netTabladecalificacin
Item Apartado Descripcin Puntos
1 Anlisis Describirlasexpresionesregulares 4
2 ProcesosAFN GenerarunAFNapartirdelase.r. 4
3 ProcesoAFD ImplementarunAFDapartirdelAFN 4
4 ProcesoAFDmnimo MinimizarelAFD 4
5 Programacin UsarunaherramientaparacrearelAnalizadorLxico(JavasourceyJavaJAR)
4
TOTAL 20Presentacinporelformulario:http://goo.gl/forms/InmE1B9aqpFechalmiteViernes24hastalas11:59:59p.m.ndicedelosapartadosdeldocumento
ElAnalizadorLxicoHerramientasparagenerarAnalizadoresLxicos
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Marcoterico:
El Analizador Lxico Lafuncinprimordialesagruparcaracteresdelaentradaentokens.Estostokenssonsuministrados(bajodemanda)alanalizadorsintctico.
LostokenssepasancomovaloressimplesAlgunostokensrequierenalgomsquesupropiaidentificacin:constantes:suvaloridentificadores:elstringoperadoresrelacionales:suidentificacinPorlotanto,elscannerdeberealizar,aveces,unadoblefuncin:identificareltokenevaluareltoken
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Esquemadeprocesamiento
AlgunasdefinicionestokennombrequesedaacadacomponentelxicolexemaSecuenciadecaracteresdelaentradaquecorrespondenauntokenpatrnFormacompactadedescribirconjuntosdelexemasAdemsuntokensecorrespondeconunpatrnuntokensepuedecorresponderconmuchoslexemas
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Tokensmshabitualespalabrasreservadasidentificadoresoperadoresconstantessmbolosdepuntuacin:,.:smbolosespeciales:()[]Pero,alavezqueelpropiotoken,elscannerpuede(debe)devolvermsinformacinsiesuntokenCONSTANTE,suvalorsiesunidentificador,elstringcorrespondientesiesunsmbolodepuntuacin,culEstainformacin,sedevuelvemedianteatributosPeroanpuedehaceralgoms:puededetectaralgunos(pocos)erroreslxicosnohayconcordanciaconningnpatrnpuedellevaracaboalgunasrecuperacionesdeerroresfiltradodecaracteresextraoscompletaralgnpatrnreemplazaralgncarcter
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Procesodeconstruccin(conayudadeherramientas)
Qupintatieneunscanner?un conjunto de funcionesuna para cada smbolo a reconocerestas funciones son controladas/invocadasporunafuncinque:
selecciona,enfuncindeloscaracteresdeentrada,qufuncininvocarOpcionalmente,tambinmediantetablasPeropuedesercomplicado:necesidadderecorrervarioscaracteresantesdedecidireltipodetokenpreanlisislookaheadEjemplo:reconocido
-
ProyectofinaldeTeoradelaComputacin
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Operadoressobrelenguajes:SeanL,Mdoslenguajes
Para un token dado, los lexemas correspondientes los expresaremos mediante expresiones regularesExpresinregular:formacompactaparadefinirunlenguajeregular
tambinllamadoconjuntoregular
Unaexpresinregularr:SerdefinidaapartirdellenguajeL(r)quegeneraoperadoressobreexpresionesregularesmedianteoperadoressobrelenguajesSeaunalfabeto
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Importante:Darlaposibilidaddelusodeparntesisparaestablecerprioridadestil,usarprioridades:
Ejemplo1:Sea={a,b}
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Ejemplo2:Sea={0,1}
YasabemosexpresarloslexemascorrespondientesalostokensNecesitamosimplementarelanalizadorlxicoEsquemaparasuimplementacin
AutmatasFinitos.GeneralidadesLos autmatas finitos pueden ser utilizados para reconocer los lenguajes expresados medianteexpresionesregularesUn autmata finito (AF) es una mquina abstracta que reconoce strings correspondientes a unconjuntoregularTambinsedenominanreconocedoresMisindeunAF:reconocersi un string de entrada respeta las reglas determinadas por una expresin regular
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Ejemplo:e.r.:(ab|c)*dautmata?
Notacingrfica:
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
AFNcomografodetransiciones
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
ConversindeunaexpresinregularaAFNObjetivo:dadaunaexpresinregular,generarunAFDquelareconozcaMtodo:construccindeThompson(BellLabs.)
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Ejemplo:procesodeconstruccinpara(ab|c)*d
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
SobreimplementacindeAL
Unanalizadorlxicomuysimple
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Prof.RichartEscobedo([email protected])[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([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
patrn:expresinregularaccin: fuente C,JAVA con las acciones a realizar cuando el patrn concuerde con un lexemaFuncionamiento:FLEXrecorreentradaestndarhastaqueencuentraunaconcordanciaUn lexema correspondiente al lenguaje de algunas de las e.r. representadas por los patronesEntonces,ejecutaelcdigoasociado(accin)Permite acceder a la informacin asociada al lexema (string, longitud del mismo, nde lnea enelfuente,...)
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Ejemplo:
Tokens,lexemasypatroneslxicos
Token:cadaunodeloselementosreconocidosporelanalizadorlxico Lexema:secuenciadecaracteresdelaentradaquecorrespondenauntoken Patrnlxico:formacompactadedescribirconjuntosdelexemas
Token1 :1patrnToken1 :NlexemasLostokenssepasancomovaloressimplesPeroalgunosrequierenalgomsdeinformacin:Ej: para una constante, habitualmente no slo se necesita saber que es una constante sino tambinculessuvalorExpresionesregularesDefinicinformaldeloslexemasquecorrespondenauntokenPermitir decidir cundo se reconoce un token a partir de una secuencia de elementos de laentradaSepuedenbautizarparapoderreferenciarlasposteriormente
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
ComoeselcomportamientodeunAnalizadorLxicoParalaexpresinaevaluarcreaunalistacompuestaporlexemaydescripcin.Ellexemaesporlostokensyladescripcineelvaloronombre.
EstructuradelarchivoFLEX
Seccindedefiniciones:bloquesliterales
secopiantalcualalfuentelex.yy.coalaclasejavaquesegenerar(JFLEX)entre%{y%}
definicionesregulares(bautismo)declaracionespropiasparaelmanejodetablasdeLEXcondicionesiniciales
cambiarelfuncionamientodelreconocedor
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
SeccindereglasFormato:
dostiposdelneas:
empiezanporblanco,%{%}fuenteCempiezanporotracosa:lneapatrncdigo
laslneasdefuenteCsecopiandirectamenteenelfuentelex.yy.calencontrarconcordancia,ejecutarcdigoasociadosinoencuentraconcordancia,ejecutaECHO(copiaellexemaensalidaestndar)
Seccinderutinasdeusuariosucontenidosecopialiteralmenteenelfuentelex.yy.ccontienefuncionesCescritasporelusuarioynecesariasparaelanalizador
manejodetabladesmbolosgeneracindesalidas(cuandonoesnecesariogeneracindecdigo)
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Ejemplo:
Tambinsepuedendarnombresaexpresionesregulares
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
ExpresionesregularesenFlex
Qupasacuandohayambigedad?FLEXaplicadosreglas:
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
AccediendoallexemayytextcontieneunpunteroglobalallexemareconocidoyylengcontienelalongituddellexemaHayotrasms:yyin,yyout...Tambinhayfunciones:yylex(),yywrap(),yymore(),yyless(),yyterminate()...VentajasdeusarestosgeneradoresElcdigoquedamseleganteEstonospermitirenlazarelanalizadorlxicoconelsintctico(Yacc/Bison)deunmodomssimpleConsideracionesatenerencuentaSermuyrigurosoconlaestructura:Sicomienzaporblanco,yanoeslneadepatrnaccinDefinirclaramentelastreszonasdelimitadaspor%%Tenercuidadoconlosanidamientosde(),[],{}TenerpresentelaformaderesolucindemltiplespatronescoincidentesEligeelqueconcuerdaconelstringmslargoSilospatronesreconocenelmismostring,eligeelqueapareceprimeroenlasdeclaracionesFlexSeguirprincipiodivideyvencersSifallaelanalizadorlxico,lomssimpleesireliminandopatrnaccinhastalocalizarelconflictivoSeguirprincipioKISS(Keepitsimple,stupid!)PensarmuybienlasE.R.autilizarpuedesimplificarmucholatareaTenerpresenteladiferenciaentremaysculasyminsculasdeloslexemas:Complicaraelcdigoconunmontnde[aA][nN][dD]...Seresuelveconflexi
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
Prof.RichartEscobedo([email protected])[UNSATC]
-
ProyectofinaldeTeoradelaComputacin
EnlacesURLparaenvodeltrabajo.
http://goo.gl/forms/kXkSQaYX9zhttps://sites.google.com/site/teorialacomputacion/home/analizadorlexicohttp://pseint.sourceforge.net/
Prof.RichartEscobedo([email protected])[UNSATC]