Вы находитесь на странице: 1из 27

Compiladores

Introduccin
Msc. Ing. Esmeide Leal
Universidad Autnoma del Caribe

Anlisis Lxico
Analisis lexico

FUNCIONES DEL ANALIZADOR LXICO

Las principales funciones del anlisis lxicos son:


Leer el programa fuente como un archivo de caracteres y dividirlo en
unidades lgicas denominada componentes lxicos o tokens
Eliminar comentarios o espacios en blanco realizados con las teclas
espaciadora, tabuladora o fin de lneas.
Reportar errores si existen
Si el analizador lxico no puede continuar por que ninguno de los patrones
concuerda con un prefijo, entonces es necesario recuperar los errores de
entrada as:
Borrando el carcter extrao
Reemplazando un carcter incorrecto por uno correcto
Intercambiando los caracteres adyacentes
Borrando caracteres sucesivos de la entrada hasta encontrar un
componente bien formado.

FUNCIONES DEL ANALIZADOR LXICO

En la fase de anlisis lxico se revisa o se examina el programa fuente


como una cadena de izquierda a derecha y se generan los componentes
lxicos o token a partir de una secuencia de caracteres que tenga un
significado vlido.

Anlisis Lxico Conceptos Bsicos

Componentes Lxicos o Tokens


Es un carcter o secuencia de caracteres que
representan una unidad de informacin dentro del
programa fuente, estos pueden ser un signo de
puntuacin, un operador aritmtico, una palabra
reservada, una constante, etc.

Para la determinacin de un anlisis lxico se tienen


en cuenta las siguientes categoras.

Palabras reservadas: Son palabras predefinidas, por


ejemplo: for, while, if, etc

Anlisis Lxico Conceptos Bsicos

Componentes Lxicos o Tokens


Smbolos especiales: Elementos que son nicos,
por ejemplo: +, -, *, (,), etc.
Variables o identificadores: Es una de las
categoras ms importantes por que son diseadas
por nosotros mismos. Estas poseen una varias
reglas asociadas.
Constantes numricas: No son solamente enteras,
pueden ser decimales o flotantes, estas tambin
deben tener una varias reglas asociadas.

Anlisis Lxico Conceptos Bsicos

Patrn
Es una regla que describe el conjunto de cadenas
de la entrada que corresponden a un componente
lxico.
Ejemplo: Una variable comienza en letras seguidas
de letras y/ dgitos.

Anlisis Lxico Conceptos Bsicos

Lexema
Es una secuencia de caracteres del programa
fuente que concuerdan con un patrn. Ejemplo:
Una variable comienza en letras seguidas de letras
y/ dgitos.
CONT1
Es un lexema que concuerda con el
patrn anterior.
CONT$
No es un lexema, por que no
concuerda con ese patrn.
Todo componente lxico puede ser un
Lexema?
No. todo componente lxico no es un lexema, porque
por ejemplo: if es una palabra reservada (recurdese
que las palabras reservadas son componentes
lxicos) y no es un lexema.

Anlisis Lxico Conceptos Bsicos

Alfabeto
Es un conjunto no vaco y finito de smbolos. Se
denota con el smbolo

Nota: Cuando necesitamos mas de un


alfabeto le colocamos un subndice, ejemplo:

{0,1}
1

{0,1,2,3,.....,9}
{a, b, c, d , e, f ,...., z}
2

Nota: En un solo alfabeto puedo colocar los


tres, pero es mejor
diferenciarlos
por clase de
4
2 3
caracteres

Anlisis Lxico Conceptos Bsicos

Cadena
Es una sucesin secuencia de caracteres
tomados a partir de un alfabeto.
Ejemplos:
010001 es una cadena que pudo ser tomado del
alfabeto ( ) del alfabeto ( )
01834 fue tomado del alfabeto ( ), puesto que sus
elementos hacen parte solo de este alfabeto.

Nota: La Cadena vaca se representa con el


smbolo ( o )

Anlisis Lxico Conceptos Bsicos

Lenguaje
Es un conjunto finito infinito de cadenas
construidos a partir de los smbolos del alfabeto.
Se denota con la letra L. Ejemplo:
L1= {010, 0110, 11100}
L2= {ab, abbc, cajk}

Anlisis Lxico Operaciones


Bsicas

Concatenacin

Si u y v son cadenas, entonces la concatenacin


se denota u.v uv
Se define:
Si u = y v , entonces u.v=v.u=v
Si u y v , entonces u.v v.u

Si u= a1a2 a3. an y v= b1b 2b 3.bm, entonces


u.v= a1a2 a3.an b1b 2b 3.bm

Anlisis Lxico Operaciones


Bsicas

Potencia de una cadena

Si u es una cadena y n {0} Z+ entonces la


potencia se denota un y se define.
=

Longitud de una cadena


Si u es una cadena entonces la longitud se
denota y se define:
=

Anlisis Lxico Operaciones


Bsicas

Inverso de una cadena

Si u es una cadena su inverso se denota u-1 y


se define:

Anlisis Lxico Operaciones Bsicas


Lenguajes

Concatenacin

Si L1 y L2 son lenguajes, entonces su


concatenacin se denota L1.L2 L1L2 y se
define:
L1L2={ xy| x L1 y L2}
Si L1={} L2 {} L1L2 = L2L1 = L2

Ejemplo

L1={a,b}
L2={c,d}
L1L2= {a,b} {c,d} ={ac, ad, bc, bd}

Nota: en las operaciones de concatenacin se


debe tener en cuenta que ac no es lo
mismos de ca. La concatenacin no es
conmutativa!!!

Anlisis Lxico Operaciones Bsicas


Lenguajes

Potencia de un Lenguaje

Sea L un Lenguaje, entonces su potencia


se denota Ln y se define:
L n=

Ejemplo

L={a,b}
L0={}
L1=L . L0 =L={a,b}
L2=L .L={a,b} {a,b}= {aa, ab, ba, bb}
L3=L . L2={a,b} {aa, ab, ba, bb}
= {aaa, aab, aba, abb, baa, bab, bba, bbb}

Anlisis Lxico Operaciones Bsicas


Lenguajes

Cerradura de Kleen (0 o mas casos)

Sea L un lenguaje, la cerradura de Kleene


se denota L* y se define:

L* =

Ejemplo
L={a,b}
L*={} {a,b} {aa, ab, ba, bb}
L*={, a, b, aa, ab, ba, bb,}
Nota: esta cerradura genera TODAS las posibles combinaciones entres
los elementos del lenguaje incluyendo el vaco ().

Anlisis Lxico Operaciones Bsicas


Lenguajes

Cerradura Positiva (1 o mas casos)

Sea L un lenguaje, la cerradura positiva se


denota L+ y se define :

L =
+

L U
LULU

Ejemplo
L={a,b}
L+={ a, b, aa, ab, ba, bb,}
Nota: esta cerradura genera TODAS las posibles
combinaciones entres los elementos del lenguaje pero NO
incluye el vaco ().

Anlisis Lxico Operaciones Bsicas


Lenguajes

Cerradura 1 o 0

Sea L un lenguaje, la cerradura 1 o 0 se


denota L? y se define:

L =
?

L
=L

Ejemplo
L={a,b}
L0={}
L1=L . L0 = L = {a, b}
L0 = { , a, b}

Anlisis Lxico Operaciones Bsicas


Lenguajes

Propiedades de las Cerraduras

1. L+= LL*
2. L*= L+ L0= L0 L+
3.(L*)n= L*

4.(L*)*= L*
5.(L*)+= L*
6. (L+)*= L*
7. (L+)+= L+
8. (L1 L2)*= (L1*L2*)*

Anlisis Lxico Tipos de Lenguajes


Tipos de lenguaje

Lenguajes
regulares
Especificar
Expresiones
regulares

Lenguajes no
regulares
Especificar
GIC

Anlisis Lxico

Lenguajes Regulares
Se llaman as porque sus palabras contienen
regularidades
o
repeticiones
de
los
mismos
componentes.
Ejemplo: L1 = {ab, abab, ababab, abababab, . . .}

En este ejemplo se aprecia que las palabras de L1 son


simplemente repeticiones de ab cualquier nmero de
veces. Aqu la regularidad consiste en que las palabras
contienen ab algn nmero de veces.

Anlisis Lxico

Lenguajes Regulares
Definicin: Un lenguaje L es regular si y solo si se
cumple al menos una de las condiciones siguientes:
i. L es finito
ii. L es la unin o la concatenacin de otros lenguajes
regulares R1 y R2, L = R1 R2 o L = R1R2 respectivamente
iii. L es la cerradura de Kleene de algn lenguaje regular, L=
R*

Anlisis Lxico

Lenguajes Regulares
Definicin: Es un lenguaje que se forma a partir de los
lenguajes bsicos como {} y {a} donde a y debe
cumplir tres operaciones bsicas: Unin, concatenacin y
cerradura de Kleene.
i. {} es un lenguaje regular
ii. Si a pertenece al alfabeto ( ) entonces {a} es un lenguaje
regular.
iii. Si L1 y L2 son lenguajes entonces L1 L2, L1 U L2, L1*, L2* son
lenguajes regulares.

Anlisis Lxico

Expresiones Regulares
Simplifica la especificacin de un lenguaje
regular y sirve para especificar un patrn.
Los operadores que se utilizan son los siguientes:
.
|
*
+
?
(,)

Concatenacin
Unin
Cerradura de Klenne
Cerradura Positiva
Cerradura 0 o 1 caso
Agrupar

El orden Jerrquico es el siguiente:

1
2
3
4

(,)
*, +, ?
.
|

Anlisis Lxico

Expresiones Regulares

Definicin:
1. {} es una expresin regular.
2. Si a , entonces a es una expresin regular.
3. Si r y s son expresiones regulares entonces su lenguaje
regular es respectivamente L(r) y L(s)
a. r es una expresin regular y se representa L (r) = {r}
b. (r | s) es una expresin regular y se representa,
L(r) U L(s) = {r} U {s} = {r, s}.
c. r.s es una expresin regular y se representa L(r) L(s) = {r}
{s} = {rs}.
d. r* es una expresin regular y se representa L*(r) = {r}* = {, r, rr,
rrr, rrrr}.

Anlisis Lxico

Propiedades de las Expresiones Regulares

Sean r, s y t expresiones regulares


1 r. = .r = r
MODULATIVA
2 (r . s) . t = r. (s . t)
ASOCIATIVA (.)
3 (r | s) | t =r | (s | t)
ASOCIATIVA (.)
4 r . (s | t) = r. s | r . t
DISTRIBUTIVA
5 (r*)* = r*
IDEMPOTENCIA
6 r+ = r . r*
7 r* = | r+
8 r? = | r

Nota: Todas las propiedades del lenguaje se


aplican en las expresiones regulares.

Вам также может понравиться