Your SlideShare is downloading. ×
0
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Analizador LÉxico
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Analizador LÉxico

28,791

Published on

Published in: Education, Travel, Business
3 Comments
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
28,791
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
839
Comments
3
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. INTEGRANTES MARYI LORENA SOLORZANO DIAZ YEISON ADRIAN RUBIO JARA
  • 2. ANALIZADOR LÉXICO <ul><li>Función de un analizador léxico, autómatas finitos </li></ul><ul><li>Expresiones regulares y AFN. </li></ul><ul><li>Diseño de un generador de analizadores léxicos. </li></ul><ul><li>Autómatas finitos determinísticos </li></ul><ul><li>Autómatas finitos no determinísticos </li></ul>
  • 3. 1. Función de un analizador léxico <ul><li>Leer los caracteres de código fuente y formarlos en unidades lógicas para que lo aborden las partes siguientes de compilador (generalmente el analizador Sintáctico).las unidades lógicas que genera el analizador léxico se denominan Tokens . Los Tokens son las palabras de un lenguaje natural: cada tokens es una secuencia de caracteres que representa una unidad de información en el programa fuente. </li></ul>
  • 4. 1. Función de un analizador léxico <ul><li>TOKENS: </li></ul><ul><li>Palabras reservadas: if, while, son cadenas fijas de letras. </li></ul><ul><li>Identificadores: Son cadenas definidas por el usuario; compuesta por lo general de letras y números y que comienzan con una letra. </li></ul><ul><li>Símbolos especiales: como los símbolos aritméticos +, * , -. Además de algunos símbolos compuestos de múltiples caracteres como son: &lt;,&gt;, = , &lt;&gt;. </li></ul>
  • 5. 1. Función de un analizador léxico <ul><li>ATRIBUTO DEL TOKEN </li></ul><ul><li>El atributo es cualquier valor asociado a un Token. Ejm: El Token NUM puede tener un atributo de valor de cadena como “32767”, que consta de 5 caracteres numéricos, pero también tendrá un atributo de valor numérico que consiste en le valor real de 32767 calculado a partir de su valor de cadena. </li></ul>
  • 6. 1. Función de un analizador léxico <ul><li>El token de símbolo especial como “MAS” , no solo se tiene el valor de cadena “+”, sino también la operación aritmética real + que esta asociada con él mismo. Es decir el símbolo del token mismo se puede ver simplemente como otro atributo. </li></ul>
  • 7. 1. Función de un analizador léxico <ul><li>REGISTRO DE TOKEN </li></ul><ul><li>El mismo analizador léxico puede realizar la operaciones necesarias para registrar un atributo en el lugar apropiado, o puede simplemente pasar el atributo a una fase posterior del compilador </li></ul><ul><li>Debido a que el analizador léxico posiblemente tendrá que calcular varios atributos para cada token, a menudo es útil recolectar todos lo atributos en un solo tipo de datos estructurado. </li></ul>
  • 8. 1. Función de un analizador léxico <ul><li>REGISTRO DE TOKEN </li></ul><ul><li>Un registro así se podría declarar en C como: </li></ul><ul><li>El atributo de valor de cadena sólo es necesario para identificadores y atributo de valor numérico sólo para números. </li></ul><ul><li>Un arreglo más común es que el analizador léxico solamente devuelva el valor del Token y coloque los otros atributos en variables donde se puede tener acceso a ellos por otras partes del compilador </li></ul>
  • 9. 2. Expresiones Regulares <ul><li>Estas expresiones representan patrones de cadena de caracteres. Las expresiones regulares r se encuentran completamente definidas mediante el conjunto de cadenas con las que concuerda. Este conjunto se denomina lenguaje generado por la expresión regular . Vale decir que la palabra lenguaje se utiliza para definir “conjunto de cadenas” y no tiene una relación especifica con el lenguaje de programación. </li></ul>
  • 10. 2. Expresiones Regulares <ul><li>Este lenguaje depende en primer lugar del conjunto de caracteres ASCII o de algún subconjunto del mismo, en ocasiones el conjunto será mas general que el conjunto de caracteres ASCII. En cuyo caso los elementos se describirán como Símbolos. Este conjunto de símbolos legales se conoce como alfabeto y se representa con el símbolo griego (sigma). </li></ul><ul><li>Por último una expresión regular r puede contener caracteres que contengan significados especiales, este tipo de caracteres se llama metacaracteres o metasímbolos. </li></ul>
  • 11. 2. Expresiones Regulares <ul><li>METACARACTERES O METASÍMBOLOS </li></ul><ul><li>No pueden ser caracteres legales en el alfabeto. Sin embargo, a menudo hay situaciones que mediante el uso de un carácter de escape “ desactiva” el significado especial de un metacarácter, los mas comunes con la diagonal inversa y las comillas. Advierte que los caracteres de escape si son caracteres legales en el alfabeto, son por si mismo metacarácteres. </li></ul>
  • 12. 2. Expresiones Regulares <ul><li>EXPRESIONES REGULARES BÁSICA </li></ul><ul><li>Cadena Vacía: Cadena que no contiene ningún carácter y se utiliza el símbolo (épsilon) para denotar la cadena vacía y definiremos el metasímbolo ( ) estableciendo L( )={ }. </li></ul><ul><li>Conjunto Vacío: La ausencia de cadenas y se describirá como { } y su símbolo será . </li></ul><ul><li>Observe que la diferencia entre { } y { }: el conjunto { } no contienen ninguna cadena, mientras que el conjunto { } contiene la cadena simple que no se contiene de ningún carácter. </li></ul>
  • 13. 2. Expresiones Regulares <ul><li>OPERACIONES DE EXPRESIONES REGULARES : </li></ul><ul><li>Selección entre alternativas: y se indica mediante el metacaracter | (barra vertical). </li></ul><ul><li>Concatenación: se indica mediante la yuxtaposición sin un metacarácter. </li></ul><ul><li>Repetición o cerradura: y se indica mediante el metacaracter * . </li></ul>
  • 14. 2. Expresiones Regulares <ul><li>OPERACIONES DE EXPRESIONES REGULARES </li></ul><ul><li>Selección entre alternativas : Si r y s son expresiones regulares, entonces en términos de lenguajes, ellenguaje r | s es la unión de los lenguajes de r y s o L( r |s )= L( r ) U L( s ). </li></ul><ul><li>Concatenación : La concatenación de dos expresiones regulares r La concatenación de dos expresiones regulares r y s se escribe como rs , y corresponde a cualquier cadena que sea la concatenación de dos cadenas, con al primera de ella correspondiendo a r y la segunda correspondiendo a s. </li></ul>
  • 15. 2. Expresiones Regulares <ul><li>Repetición: La repetición de una expresión regular, denominada también en ocasiones cerradura (de Kleenne) se escribe r* , donde r es una expresión regular. La expresión regular r* corresponde a cualquier concatenación finita de cadenas, cada una de las cuales corresponde a r . </li></ul>
  • 16. 2. Expresiones Regulares
  • 17. 2. Expresiones Regulares <ul><li>LA PRECEDENCIA DE LAS OPERACIONES </li></ul><ul><li>La selección entre alternativa tiene la precedencia más baja. </li></ul><ul><li>La concatenación tiene uan precedencia Media. </li></ul><ul><li>Asterisco o repetición tiene la precedencia más alta. </li></ul>
  • 18. 4. Autómatas Finitos <ul><li>Un autómata finito o máquina de estado finito es un modelo matemático de un sistema que recibe una cadena constituida por símbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autómata reconoce. </li></ul><ul><li>Un alfabeto Σ = {a, b, c}, una cadena podría ser: x = aacbbcba. </li></ul>
  • 19. 4. Autómatas Finitos En el comienzo del proceso de reconocimiento de una cadena, el AF se encuentra en el estado inicial y a medida que procesa cada símbolo de la cadena va cambiando de estado de acuerdo a lo determinado por la función de transición . Cuando se ha procesado el último de los símbolos de la cadena de entrada, el autómata se detiene. Si el estado en el que se detuvo es un estado de aceptación o final, entonces la cadena pertenece al lenguaje reconocido por el autómata, caso contrario, la cadena no pertenece a dicho lenguaje.
  • 20. <ul><li>Formalmente, un autómata finito (AF) puede ser descrito como una 5-tupla ( S ,Σ, T , s , A ) donde: </li></ul><ul><li>S un conjunto de estados; </li></ul><ul><li>Σ es un alfabeto; </li></ul><ul><li>T es la función de transición: ; </li></ul><ul><li>es el estado inicial; </li></ul><ul><li>es un conjunto de estados de aceptación o finales. </li></ul><ul><li>Ejemplo 1 </li></ul><ul><li>S = {S 1 , S 2 }, </li></ul><ul><li>Σ = {0,1}, </li></ul><ul><li>T = {(S 1 ,0,{S 2 });(S 1 ,1,{S 1 });(S 2 ,0,{S 1 });(S 2 ,1,{S 2 })} </li></ul><ul><li>s = S 1 </li></ul><ul><li>A = {S 1 }. </li></ul>4. Autómatas Finitos
  • 21. <ul><li>Un AFD o autómata finito determinista es aquel autómata finito cuyo estado de llegada está unívocamente determinado por el estado inicial y el carácter leído por el autómata. </li></ul><ul><li>Formalmente, un autómata finito determinista (AFD) es similar a un Autómata de estados finitos, representado con una 5-tupla ( S ,Σ, T , s , A ) donde: </li></ul><ul><li>Σ es un alfabeto; </li></ul><ul><li>S un conjunto de estados; </li></ul><ul><li>T es la función de transición: ; </li></ul><ul><li>es el estado inicial; </li></ul><ul><li>es un conjunto de estados de aceptación o finales </li></ul>4. Autómatas Determinísticos
  • 22. <ul><li>Al contrario de la definición de autómata finito , este es un caso particular donde no se permiten transiciones vacías, el dominio de la función T es S (con lo cual no se permiten transiciones desde un estado de un mismo símbolo a varios estados). </li></ul><ul><li>A partir de este autómata finito es posible hallar la expresión regular resolviendo un sistema de ecuaciones. </li></ul><ul><li>S 1 = 1 S 1 + 0 S 2 + ε </li></ul><ul><li>S 2 = 1 S 2 + 0 S 1 </li></ul><ul><li>Siendo ε la palabra nula. Resolviendo el sistema y haciendo uso de las reducciones apropiadas se obtiene la siguiente expresión regular: 1*(01*01*)* . </li></ul>4. Autómatas Determinísticos
  • 23. <ul><li>Un AFND o autómata finito no determinista es aquel que presenta cero, una o más transiciones por el mismo carácter del alfabeto. </li></ul><ul><li>Un autómata finito no determinista también puede o no tener más de un nodo inicial. </li></ul><ul><li>Los AFND también se representan formalmente como tuplas de 5 elementos ( S ,Σ, T , s , A ). La única diferencia respecto al AFD es T. </li></ul><ul><li>AFD: </li></ul><ul><li>AFND: (partes de S)‏ </li></ul><ul><li>Debido a que la función de transición lleva a un conjunto de estados, el automáta puede estar en varios estados a la vez (o en ninguno si se trata del conjunto vacío de estados). </li></ul>5. Autómatas No Determinísticos
  • 24. GRACIAS

×