Está en la página 1de 13

UniversidadNacionalde Lujn TeoradelacomputacinI

Alumnos: CaillavaSantiago MarraJulieta MedinillaJonatan PerettoGaston Docente: MaraCapuya

Abstract
Unanalizadorlxicoeslaprimeraetapadeuncompilador.Se tratadeunprogramaquerecibecomoentradaunasecuenciade caracteresyproduceunasalidacompuestadetokensqueluegose lospasaralanalizadorsintctico.Enestetrabajosetrabajar sobreunciertolenguajeL*. PalabrasClave:Autmatas,Anlisislxico.

Paracumplirsufuncin,elanalizadorlxicodebeeliminar espaciosenblanco,saltosdelnea,tabuladores,ignorar comentarios,detectaryrecuperarerrorestalescomosmbolosno vlidosonoreconocidosporellxicodellenguaje,oqueno formanpartedeningncomponentelxicodellenguajealque responde,esdecir,elanalizadorlxicodebecontestaralas preguntas:esestasecuenciadecaracteresvlidaenmileguaje?, siesvlida,aquedefinicinregularcorresponde?(qutoken es?) Parareconocerlenguajesregularesseutilizaunmodelomatemtico basadoenestadosytransicionesentreestos,llamadoautmata finitodeterminstico,queesconstruidoapartirdeexpresiones regularesdeloselementosdellenguaje.

Introduccin

Objetivosp.4 Desarrollo..p.5 AnalizadorLxico LenguajeL*p.5 Tokensyexpresionesregulares.p.5 Tokensyautmatasfinitos..p.9 Conclusin.p.13

ndice

Objetivos
PresentarellenguajeL*.

Definirunmodelodediseodeunanalizadorlxicoatravs delusodemquinasabstractas(autmatasfinitos). Entenderqutipodecadenasreconoceelautmatausadoenel modelo.

Loprimeroquesedeberealizarconuncdigofuenteparaluego producircomosalidauncdigoejecutable,eselanlisislxico. Elanalizadorlxicoeslaprimeraetapaarecorrerenla compilacindeunprograma. Durantelacompilacinelprogramafuentesetransformaenotro lenguaje. Elanalizadorlxicotransformaunaentradalinealdecaracteres delprogramafuenteenunalistadecomponenteslxicosvalidos paraellenguajeencuestin,llamadostokensquesernutilizados enetapasposterioresdelacompilacin. Enestetrabajoseplanteaunmodelodediseoparaestaprimer etapadereconocimientodeelementosdeunlenguajeL*definido.

Desarrollo

Analizadorlxico
LenguajeL* Elalfabetodeestelenguajeeselsiguiente: =Caracteres={a,b,c,d,e,f,g,h,i,j,k,l,m,n,,o, p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9, [,],{,},@,,#,$,%,/,(,),=,,_,.,,,;,<,>} Tokens y expresiones regulares Para empezar, debemos definir los elementos del lenguaje en forma de expresiones regulares y su correspondiente token. <op_asig>= <op_asig1>+= <op_asig2>= <op_asig3>*= <op_asig5>/= <op_mas>+

<op_menos> <op_mul>* <op_div>/ <op_may>> <op_men>< <op_dist><> <op_igual>== <op_mayigual>>= <op_menigual><= <p_abre>( <p_cierra>) <ll_abre>{ <ll_cierra>} <c_abre>[ <c_cierra>] <fin_lin>; <dos_punt>: <coma>, <punto>. <id>(letra).(letra|digito)* <cte_entera>digito+ <cte_real>(digito+.<punto>.digito+)|(digito*.<punto>. digito+)|(digito+.<punto>.digito*) <cte_string>.(letra|digito|caracteresespeciales)+ <comentario>#!(letra|digito|(car_esp2)|(!.car_esp2)| (#.car_esp2)|(#)|(!))*!# 6

<hexa> <p_abre>(1|2|3|4|5|6|7|8|9|0|A|a|B|b|C|c|D|d|E|e|F|f)*.<coma>.16.< p_cierra> <bin><p_abre>.(0|1)*.<coma>.2.<p_cierra> letra={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z} digito={0,1,2,3,4,5,6,7,8,9} caracteresespeciales=caracteres{letraUdigito} car_ esp2=caracteresespeciales{!U#} Laspalabrasreservadassonaquellasqueloslenguajesde programacinreservanparausosparticularesynopuedenser empleadascomoidentificadoresenelmismo,aunquesetratancomo uncasoparticulardeestos: Primerosereconoceatodasestascomoidentificadores,yluego utilizandounatablaadicionalconlaspalabrasreservadas,se consultasielidentificadorreconocidoesverdaderamenteun identificadorounapalabrareservada. PalabrasReservadas={display,define,enddefine,while,if,else, ,def,def_main,int,string,float,boolean,read,print,and, or,xor,not,length} Reglas: <programa><declaracion_variables>def_main<ll_abre> <lista_sentencias><ll_cierra> <declaracion_variables>DEFINE<declaracion>ENDDEFINE <declaracion><tipo_var><dos_punt><lista_var>|<tipo_var> <dos_punt><lista_var><declaracion> <tipo_var>STRING|FLOAT|INT|BOOLEAN <lista_var><var><fin_lin>|<var><coma><lista_var> <var><id> <lista_sentencias><sentencia><fin_lin>|<sentencia><fin_lin> <lista_sentencias> <sentencia><asignacion>|<repeat>|<if>|<salida>| <display>|<comentario> <display><print><p_abre><contenido_disp><p_cierra> 7

<contenido_disp><expresion_num>|<expresion_str> <repeat>do<ll_abre><lista_sentencias><ll_cierra>while <condicion> <if>if<p_abre><condicion><p_cierra><dos_punt><ll_abre> <lista_sentencias><ll_cierra>|if<p_abre><condicion> <p_cierra><dos_punt><ll_abre><lista_sentencias><ll_cierra> else<ll_abre><lista_sentencias><ll_cierra> <condicion><comparacion>|<condicion><op_logico> <comparacion>|not<condicion> <comparacion><p_abre><expresion_num><op_comparacion> <expresion_num><p_cierra>|<expresion_num><op_comparacion> <expresion_num>|<p_abre><expresion_str><op_comparacion> <expresion_str><p_cierra>|<expresion_str><op_comparacion> <expresion_str> <op_logico>and|or|xor <op_comparacion><op_men>|<op_may>|<op_igual>|<op_dist>| <op_menigual>|<op_mayigual> <asignacion><id><op_asignacion><expresion_num>|<id> <op_asignacion><expresion_str> <op_asignacion><op_asig>|<op_asig1>|<op_asig2>|<op_asig3> |<op_asig4> <expresion_num><expresion_num><operador1><termino_num>| <termino_num> <termino_num><termino_num><operador2><factor>|<factor> <factor><id>|<cte_entera>|<expresion_num>|<longitud>| <hexa>|<bin> <expresion_str><expresion_str><operador1><factor_str>| <factor_str> <factor_str><id>|<cte_string> <operador1><op_mas>|<op_menos> <operador2><op_mul>|<op_div> <longitud>length<p_abre><c_abre><contenido><c_cierra> <p_cierra> 8

<contenido><expresion_num><coma><contenido>|<expresion_num> |<expresion_str><coma><contenido>|<expresion_str>

Tokensyautmatasfinitos Operadordeasignacin

OperadoresdeAsignacionesEspeciales

Operadoresaritmticos

Operadoresrelacionales

10

Parntesis,CorchetesyLlaves({abrebloquedeinstrucciones,} cierrabloquedeinstrucciones)

Puntoycoma(findelnea),Dospuntos,Coma

11

Identificadores

Losidcomienzanconletrayterminanconletraonmero.Puede estarformadoporsolouncarcterquedebeserunaletra. Ejemplos:cte1,a,a1. Constanteentera

Constantereal

12

ConstanteString

Lacte_stringdebeempezaryterminarconcomillasdobles.No puedesernula,debecontenerentremediodelascomillasalmenos uncarcter.Ejemplos:hola_mundo,<espacio>.

Conclusin

Atravsdelmodelodediseoplanteadodelanalizadorlxicoen ellenguajeL*,seintentarepresentarlasfuncionesquecumple estaprimeraetapadeuncompiladoryconocerloselementos lxicosquecomponenellenguajeL*,loscualessonreconocidos comopartedelmismousandoelmodelodeautmatasfinitos.

13

También podría gustarte