TC AnalizadorLexico

of 26 /26
Proyecto final de Teoría de la Computación Proyecto final Teoría de la computación Objetivos: Diseñar un Analizador Léxico. Conocer la estructura interna de una Analizador Léxico. Implementar un Analizador Léxico para reconocer código fuente para el programa PseInt. pseint.sourceforge.net Tabla de calificación Item Apartado Descripción Puntos 1 Análisis Describir las expresiones regulares 4 2 Procesos AFN Generar un AFN a partir de las e.r. 4 3 Proceso AFD Implementar un AFD a partir del AFN 4 4 Proceso AFD mínimo Minimizar el AFD 4 5 Programación Usar una herramienta para crear el Analizador Léxico (Java source y Java JAR) 4 TOTAL 20 Presentación por el formulario: http://goo.gl/forms/InmE1B9aqp Fecha límite Viernes 24 hasta las 11:59:59 p.m. Índice de los apartados del documento El Analizador Léxico Herramientas para generar Analizadores Léxicos Prof. Richart Escobedo ([email protected] ) [UNSATC]

Embed Size (px)

description

TC AnalizadorLexico

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]