unidad ii analisis lexico
TRANSCRIPT
-
7/23/2019 Unidad II Analisis Lexico
1/29
Lenguajes y Expresiones Regulares
Universidad de Guadalajara
Centro Universitario de la Costa
Ingeniera en Computacin
Compiladores
Febrero 20, 2014.
-
7/23/2019 Unidad II Analisis Lexico
2/29
En un compilador, el anlisis lineal se llama anlisis linealoexploracin.
Por anlisis lineal se entiende como la cadena de caracteres que constituye
el programa fuente se lee de izquierda a derecha y se agrupan en
componentes lxicos, que son secuencias de caracteres que tiene un
significado colectivo.
Los espacios en blanco (delimitadores) que separan los caracteres de estos
componentes lxicos normalmente se eliminan durante el anlisis lxico.
-
7/23/2019 Unidad II Analisis Lexico
3/29
Una expresin regular denota un conjunto de secuencias de smbolos vlidas
que se construyen en base al alfabeto de un lenguaje. Generalmente estos
conjuntos se representan como:
Es una expresin regular que denota el conjunto vaco (el conjunto no
contiene secuencias de smbolos).
Es una expresin regular que denota al conjunto que contiene la secuencia
vaca.
S Una secuencia de smbolos S es una expresin regular que denota a un
conjunto que contiene a S.
-
7/23/2019 Unidad II Analisis Lexico
4/29
2 1 Lenguajes y Expresiones
Regulares
El analizar lxico es la primera fase de un compilador. Su primer funcin
consiste en leer los caracteres de entrada y elaborar como salida una
secuencia de componentes lxicos que utiliza el analizador sintctico para
hacer el anlisis.
Existen varias razones para dividir la fase de anlisis de la compilacin en
anlisis lxico y anlisis sintctico:
Un diseo sencillo es quizs la consideracin ms importante.
Se mejora la eficiencia del compilador.
Se mejora la transportabilidad del compilador.
-
7/23/2019 Unidad II Analisis Lexico
5/29
2 1 Lenguajes y Expresiones
Regulares
Las expresiones regulares son una notacin importante para especificar
patrones. Cada patrn concuerda con una serie de cadenas, de modo que las
expresiones regulares servirn como nombres para conjuntos de cadenas.
El trmino alfabeto o clase de carcterdenota cualquier conjunto finito de
smbolos. Ejemplos tpicos de smbolos son las letras y los caracteres. Elconjunto {0,1} es el alfabeto binario. Los cdigos ASCII y EBCDIC son dos
ejemplos de alfabetos de un computador.
-
7/23/2019 Unidad II Analisis Lexico
6/29
2 1 Lenguajes y Expresiones
Regulares
Unaexpresin regular, consiste en comparar un patrn frente a un texto,
para comprobar si el texto contiene lo especificado en el patrn.
Patrn:in
Coinciden:
Intensidad.
Cinta.
Interior
Una cadena sobre algn alfabeto es una secuencia finita de smbolos
tomados de ese alfabeto. En teora del lenguaje, los trminos frase y palabraa menudo se utilizan como sinnimos del trminocadena. La longitud de
una cadenaS,suele escribirse |S|, y corresponde al nmero de apariciones
de smbolos enS. Ejemplo:Caminoes una cadena de longitud 6.
-
7/23/2019 Unidad II Analisis Lexico
7/29
2 1 Lenguajes y Expresiones
Regulares
La cadena vaca esta representada por el smbolo , y es una cadena
especial de longitud cero.
El trmino lenguaje se refiere a cualquier conjunto de cadenas de un alfabeto
fijo. Existen varias operaciones importantes que se pueden aplicar a los
lenguajes. Para el anlisis lxico interesan principalmente la unin, laconcatenacin y la cerradura.
Si X eY son cadenas, entonces la concatenacin deX eY, que se
escribenXYes la cadena que resulta de agregarYaX. Por ejemplo, si
X=caza eY=fortuna, entoncesXY=cazafortunas.
La cadena vaca es el elemento identidad que se concatena. Es decir, S =
S = S.
-
7/23/2019 Unidad II Analisis Lexico
8/29
2 1 Lenguajes y Expresiones
Regulares
Ejemplo: SeaLel conjunto {A, B,, Z, a, b,, z} yDel conjunto {0, 1, 2,,
9}. Se pueden considerarL y D de dos maneras. L como el alfabeto que
contiene el conjunto de letras maysculas y minsculas, yDcomo el alfabeto
que contiene el conjunto de los 10 dgitos decimales.
a. L U Des el conjunto de letras y dgitos (unin).b. LDes el conjunto de cadenas que consta de una letra seguida de un dgito
(concatenacin).
c. L4 es el conjunto de todas las cadenas de cuatro letras. (cerradura de
Kleene).
d. L*es el conjunto de todas las cadenas de letras, incluiyendo , la cadena
vaca (cerradura positiva).e. L (LU D)* es el conjunto de todas las cadenas de letras y dgitos que
comienzan con una letra.
f. D*es el conjunto de todas las cadenas de uno o ms dgitos.
-
7/23/2019 Unidad II Analisis Lexico
9/29
2 1 Lenguajes y Expresiones
Regulares
Expresiones Regulares
Letra (letra| dgito)*
La barra vertical significa o, los parntesis se usan para agrupar
subexpresiones, el asterisco significacero o ms casos dela expresin entre
parntesis y la yuxtaposicin de letra con el resto de la expresin significa
concatenacin.
Una expresin regular se construye a partir de expresiones regulares ms
simples utilizando un conjunto de reglas definitorias. Cada expresin regularRrepresenta un lenguaje L(R) combinando de varias maneras a los lenguajes
representados por las subexpresiones deR.
-
7/23/2019 Unidad II Analisis Lexico
10/29
2 1 Lenguajes y Expresiones
Regulares
Las siguientes son las reglas que definen las expresiones regulares del
alfabeto . Asociada a cada regla hay una especificacin del lenguaje
representado por la expresin regular que se est definiendo.
1) es una expresin regular designada por {}; es decir, el conjunto que
contiene la cadena vaca.2) Si A es un smbolo de , entonces A es una expresin regular
designada por {A}; por ejemplo, el conjunto que contiene la cadena A
aunque se usa la misma notacin para las tres, tcnicamente , la expresin
regular A es distinta de la cadena A o del smbolo A. El contexto
aclarar si se habla deAcomo una expresin regular, cadena o smbolo.
-
7/23/2019 Unidad II Analisis Lexico
11/29
2 1 Lenguajes y Expresiones
Regulares
3. Suponiendo que R y S sean expresiones regulares representadas por los
lenguajes L(R) y L(S), entonces:
(R) (S) es una expresin regular representada por L(R) U L(S).
(R) (S) es una expresin regular representada por L(R) L(S).
(R)* es una expresin regular representada por (L(R))*.
(R) 2 es una expresin regular representada por L(R)2.
Se dice que un lenguaje designado por una expresin regular es un
conjunto regular. La especificacin regular es un ejemplo de definicin
recursiva. Las reglas 1 y son la base de la definicin recursiva. Las reglas 1y 2 son las base de la definicin; se usa el trmino smbolo bsico para
referirse a o a un smbolo deque aparezcan en una expresin regular.
La regla 3 proporciona el paso inductivo.
-
7/23/2019 Unidad II Analisis Lexico
12/29
2 1 Lenguajes y Expresiones
Regulares
Se pueden evitar los parntesis innecesarios en las expresiones regulares si
se adoptan las siguientes convenciones:
El operador unitario * tiene la mayor precedencia y es asociativo por la
izquierda.
La concatenacin tiene la segunda mayor precedencia y es asociativa porla izquierda.
| tiene la menor precedencia y es asociativo por la izquierda.
Segn estas convenciones, (a)|((b)*(c)) es equivalente a:a|b*c. estas dos
expresiones designan el conjunto de cadenas que tienen una solaa, o cero
o msbseguida de unac.
-
7/23/2019 Unidad II Analisis Lexico
13/29
2 2 Analizador Lexicogrfico con
autmatas finitos
Unautmata finitoomquina de estado finitoes un modelo matemtico
de un sistema que recibe una cadena constituida por smbolos de un alfabeto
y determina si esa cadena pertenece al lenguaje que el autmata reconoce.
Los autmatas finitos son las herramientas empleadas como
reconocedores de tokens. Un autmata finito es capaz de reconocer un
conjunto regular, es decir, un conjunto de cadenas denotado por cualquier
expresin regular.
Una expresin regular denota a un lenguaje regular.
-
7/23/2019 Unidad II Analisis Lexico
14/29
2 2 Analizador Lexicogrfico con
autmatas finitos
Un autmata finito es un reconocedor para un lenguaje, su
programacin no es una tarea compleja, su entrada es una cadenaX
y responde si , siXes una sentencia del lenguaje, no de otra manera.
Los autmatas finitos se clasifican en:
1. Determinsticos.
2. No Determinsticos
-
7/23/2019 Unidad II Analisis Lexico
15/29
2 2 Analizador Lexicogrfico con
autmatas finitos
Formalmente, un autmata finito (AF) puede ser descrito como una
quinta tupa (S,,T, s, A) donde:
S es el conjunto de estados.
es el alfabeto de entrada.T es la funcin de transicin.
s es el estado inicial.
A es un conjunto de estados de aceptacin o finales.
-
7/23/2019 Unidad II Analisis Lexico
16/29
2 2 Analizador Lexicogrfico con
autmatas finitos
Ejemplo:
S = {S1, S2}
= {0, 1}
T = {(S1, 0, {S2}); (S1, 1, {S1}); (S2, 0, {S1}); (S2, 1, {S2})}s = S1
A = {S1}
S1 y S son estados y S1 es un estado de aceptacin y de inicio. Cada arista
est etiquetado con la entrada.
-
7/23/2019 Unidad II Analisis Lexico
17/29
2 2 Analizador Lexicogrfico con
autmatas finitos
Estado de
aceptacin
aristas
alfabeto
Estados
Inicio
Estado
inicial
-
7/23/2019 Unidad II Analisis Lexico
18/29
2 2 Analizador Lexicogrfico con
autmatas finitos
En el comienzo del proceso de reconocimiento de una cadena, el
Autmata Finito se encuentra en el estado inicial, y a medida que
procesa cada smbolo de la cadena va cambiando de estado de
acuerdo a lo determinado por lafuncin de transicin.
Cuando se ha procesado el ltimo de los smbolos de la cadena de
entrada, el autmata se detiene. Si el estado en el que se detuvo es
un estado de aceptacin o final, entonces la cadena pertenece al
lenguaje reconocido por el autmata, caso contrario, la cadena no
pertenece a dicho lenguaje.
-
7/23/2019 Unidad II Analisis Lexico
19/29
2 2 Analizador Lexicogrfico con
autmatas finitos
Autmata Finito Determinstico
Es aquel en cual para cada par (estado, smbolo) est perfectamente definido
el siguiente estado al cual pasar el autmata, es decir, para cualquier estado
q en que se encuentre el autmata y con cualquier smbolo s del alfabeto
ledo, existe exactamente una transicin que parte de q y esta etiquetada con
si.
Es un modelo matemtico formado por:
1. Un conjunto de estados S.
2. Un conjunto de smbolos de entrada (el alfabeto de smbolos de
entrada).
3. Una funcin de transicin mueve que transforma pares estado-smbolo enconjuntos de estados.
4. Un estado S0que se considera el estado de inicio (o inicial).
5. Un conjunto de estados F considerados como estados de aceptacin (o
finales).
-
7/23/2019 Unidad II Analisis Lexico
20/29
2 2 Analizador Lexicogrfico con
autmatas finitos
Al contrario de la definicin de autmata finito, este es un caso particular
donde no se permiten transiciones vacas, el dominio de la funcin T es S ( con
lo cual no se permiten transiciones desde un estado de un mismo smbolo a
varios estados).
Un Autmata Finito Deterministico es un grafo dirigido y etiquetado. Los nodosse llaman estados y los arcos que los unen, transiciones. Las transiciones se
pueden representar mediante una tabla de transiciones.
-
7/23/2019 Unidad II Analisis Lexico
21/29
2 2 Analizador Lexicogrfico con
autmatas finitos
Autmata Finito No Determinstico
Un AFND o autmata Finito no Determinista es aquel que presenta cero, una
o ms transiciones por el mismo carcter del alfabeto.
Un autmata finito no determinista tambin puede o no tener ms de un nodo
inicial.
Los AFND tambin se representan formalmente como tuplas de 5 elementos
(S,,T, s, A).
La funcin de transicin lleva a un conjunto de estados, el autmata puede
estar en varios estados a la vez ( o en ninguno si se trata del conjunto vacode estados).
-
7/23/2019 Unidad II Analisis Lexico
22/29
2 3 Diseo de un Analizador
Lxico
Diagrama de Estados
A travs de un diagrama de estados, se puede representar un autmata,
un diagrama de estados de un autmata es un grafo dirigido, donde:
Los nodos representan a estados (cada nodo es etiquetado con elnombre del estado).
Los arcos representan a transiciones entre los estados.
Cada arco lleva una etiqueta que indica qu smbolo de entrada provoca
la transicin correspondiente.
Si es necesario distinguir al estado inicial, se marca con una .
los estados finales irn recuadrados o encerrados.
-
7/23/2019 Unidad II Analisis Lexico
23/29
2 3 Diseo de un Analizador
Lxico
Reconocimiento de palabras con autmatas
Una de las aplicaciones ms importantes de los autmatas finitos
deterministas, es el reconocimiento de palabras y lenguajes. El
proceso de reconocimiento es el siguiente:
El autmata comienza en el estado inicial cuando recibe la primera
letra de la palabra y transita al estado siguiente a partir del estado
actual, se vuelve a procesar la siguiente letra para pasar de forma
iterativa a los siguientes estados.
Al finalizar de procesar la palabra, si se llega a un estado final, la
palabra es aceptada por el autmata. En caso contrario, se considera
rechazada.
-
7/23/2019 Unidad II Analisis Lexico
24/29
2 3 Diseo de un Analizador
Lxico
Tabla de transicin.
Es una representacin clsica de una funcin con dos argumentos. En
las filas se colocarn los estados y en las columnas los smbolos del
alfabeto de entrada.
Cada interseccin fila (estado q)columna (carcter a) corresponde
al estado f(q,a).
El estado inicial se representa con Los estados finales con un *
-
7/23/2019 Unidad II Analisis Lexico
25/29
2 3 Diseo de un Analizador
Lxico
Ejemplo:
-
7/23/2019 Unidad II Analisis Lexico
26/29
2 3 Diseo de un Analizador
Lxico
Diagrama de Transicin.
Es un grafo en el que los vrtices representan los distintos estados y
los arcos las transiciones entre los estados.
Cada arco va etiquetado con el smbolo que corresponde a dicha
transicin.
El estado inicial se representa con
Los estados finales con un doble crculo.
-
7/23/2019 Unidad II Analisis Lexico
27/29
2 3 Diseo de un Analizador
Lxico
La indeterminacin en el caso que falten transiciones para algunas
entradas se resuelve incluyendo un nuevo estado, llamado deabsorcin o muerto, al cual llegan todas las transiciones no
definidas.
-
7/23/2019 Unidad II Analisis Lexico
28/29
2 3 Diseo de un Analizador
Lxico
-
7/23/2019 Unidad II Analisis Lexico
29/29
Fin de la Unidad II.!!!!!!!
Prximo examen..