analizador lÉxico

24
INTEGRANTES MARYI LORENA SOLORZANO DIAZ YEISON ADRIAN RUBIO JARA

Upload: faridrojas

Post on 08-Jul-2015

28.917 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Analizador LÉxico

INTEGRANTES

MARYI LORENA SOLORZANO DIAZYEISON ADRIAN RUBIO JARA

Page 2: Analizador LÉxico

ANALIZADOR LÉXICO

Función de un analizador léxico, autómatas finitos

Expresiones regulares y AFN. Diseño de un generador de analizadores léxicos. Autómatas finitos determinísticos Autómatas finitos no determinísticos

Page 3: Analizador LÉxico

1. Función de un analizador léxico

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.

Page 4: Analizador LÉxico

1. Función de un analizador léxico

TOKENS:Palabras reservadas: if, while, son cadenas fijas de letras.Identificadores: Son cadenas definidas por el usuario; compuesta por lo general de letras y números y que comienzan con una letra.Símbolos especiales: como los símbolos aritméticos +, * , -. Además de algunos símbolos compuestos de múltiples caracteres como son: <,>, = , <>.

Page 5: Analizador LÉxico

1. Función de un analizador léxico

ATRIBUTO DEL TOKENEl 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.

Page 6: Analizador LÉxico

1. Función de un analizador léxico

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.

Page 7: Analizador LÉxico

1. Función de un analizador léxico

REGISTRO DE TOKEN

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 compiladorDebido 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.

Page 8: Analizador LÉxico

1. Función de un analizador léxico

REGISTRO DE TOKENREGISTRO DE TOKENUn registro así se podría declarar en C como:El atributo de valor de cadena sólo es necesario para identificadores y atributo de valor numérico sólo para números.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

Page 9: Analizador LÉxico

2. Expresiones Regulares

Estas expresiones representan patrones de cadena de caracteres. Las expresiones regulares rse 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.

Page 10: Analizador LÉxico

2. Expresiones Regulares

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).

Por último una expresión regular r puede contener caracteres que contengan significados especiales, este tipo de caracteres se llama metacaracteres o metasímbolos.

Page 11: Analizador LÉxico

2. Expresiones Regulares

METACARACTERES O METASÍMBOLOS

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.

Page 12: Analizador LÉxico

2. Expresiones Regulares

EXPRESIONES REGULARES BÁSICACadena 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( )={ }. Conjunto Vacío: La ausencia de cadenas y se describirá como { } y su símbolo será .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.

Page 13: Analizador LÉxico

2. Expresiones Regulares

OPERACIONES DE EXPRESIONES REGULARESOPERACIONES DE EXPRESIONES REGULARES::

Selección entre alternativas: y se indica mediante el metacaracter | (barra vertical).

Concatenación: se indica mediante la yuxtaposición sin un metacarácter.Repetición o cerradura: y se indica mediante el metacaracter * .

Page 14: Analizador LÉxico

2. Expresiones Regulares

OPERACIONES DE EXPRESIONES REGULARESOPERACIONES DE EXPRESIONES REGULARESSelecció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). 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.

Page 15: Analizador LÉxico

2. Expresiones Regulares

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 .

Page 16: Analizador LÉxico

2. Expresiones Regulares

Page 17: Analizador LÉxico

2. Expresiones Regulares

LA PRECEDENCIA DE LAS OPERACIONESLA PRECEDENCIA DE LAS OPERACIONES

La selección entre alternativa tiene la precedencia más baja.La concatenación tiene uan precedencia Media.Asterisco o repetición tiene la precedencia más alta.

Page 18: Analizador LÉxico

4. Autómatas Finitos

Un autómata finito o máquina de estado finitoes 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.

Un alfabeto Σ = {a, b, c}, una cadena podría ser: x = aacbbcba.

Page 19: Analizador LÉxico

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.

Page 20: Analizador LÉxico

Formalmente, un autómata finito (AF) puede ser descrito como una 5-tupla (S,Σ,T,s,A) donde:S un conjunto de estados; Σ es un alfabeto; T es la función de transición: ; es el estado inicial; es un conjunto de estados de aceptación o finales.

Ejemplo 1S = {S1, S2},

Σ = {0,1}, T = {(S1,0,{S2});(S1,1,{S1});(S2,0,{S1});(S2,1,{S2})}

s = S1

A = {S1}.

4. Autómatas Finitos

Page 21: Analizador LÉxico

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.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:Σ es un alfabeto; S un conjunto de estados; T es la función de transición: ; es el estado inicial; es un conjunto de estados de aceptación o finales

4. Autómatas Determinísticos

Page 22: Analizador LÉxico

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).A partir de este autómata finito es posible hallar la expresión regular resolviendo un sistema de ecuaciones.S1 = 1 S1 + 0 S2 + ε

S2 = 1 S2 + 0 S1

Siendo ε la palabra nula. Resolviendo el sistema y haciendo uso de las reducciones apropiadas se obtiene la siguiente expresión regular: 1*(01*01*)*.

4. Autómatas Determinísticos

Page 23: Analizador LÉxico

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.Un autómata finito no determinista también puede o no tener más de un nodo inicial.Los AFND también se representan formalmente como tuplas de 5 elementos (S,Σ,T,s,A). La única diferencia respecto al AFD es T.AFD: AFND: (partes de S)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).

5. Autómatas No Determinísticos

Page 24: Analizador LÉxico

GRACIAS