Académique Documents
Professionnel Documents
Culture Documents
ANALISIS LEXICO
1.1.
ejemplo:
{0,1}
{0,1,2,3,.....,9}
{a, b, c, d , e, f ,...., z}
1
Nota: En un solo alfabeto puedo colocar los tres, pero es mejor diferenciarlos por
clase de caracteres
1.2.5 Cadena
Es una sucesin secuencia de caracteres tomados a partir de un alfabeto.
Ejemplos:
) del alfabeto (
=
1.3.1.4.
1.2.6 Lenguaje:
Es un conjunto finito infinito de cadenas construidos a partir de los smbolos del
alfabeto. Se denota con la letra L. Ejemplo:
1.3.1.5.
Concatenacin
y v , entonces u.v=v.u=v
Si u y v
, entonces u.v v.u
, entonces,
v es sufijo de u
1.3.2. Operaciones con Lenguajes
1.3.2.1. Concatenacin
Si L1 y L2 son lenguajes, entonces su concatenacin se denota L1.L2 L1L2 y se
define:
un y se define
L1L2={ xy| x
=
1.3.1.3.
, entonces,
v es prefijo de u
{0}
1. Si u=
Si u es una cadena y n
, entonces,
1.3.1.2.
, entonces,
y L2}
y se define:
Ejemplo
L1={a,b}
L2={c,d}
U L = L U L U L U
L+ =
i 1
Ejemplo:
Nota: esta cerradura genera TODAS las posibles combinaciones entres los
elementos del lenguaje pero la diferencia con la cerradura de Kleene es que en
este NO se incluye el vaco ( ).
1.3.2.5. Cerradura de 1 o 2
Ln=
Ejemplo:
L={a,b}
Ejemplo:
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}
1.3.2.3. Cerradura de Kleene ( ms Casos)
Sea L un lenguaje, la cerradura de de Kleene se denota L* y se define:
U L = L U L U L U
L =
L={a,b}
L0={ }
L1=L . L0 =L={a,b} por tanto,
L?= L0 U L1
= { ,a,b}
1.3.2.5. Propiedades de las cerraduras
1. L+= LL*
i 0
2. L*= L+ u L0= L0 u L+
Ejemplo:
3.(L*)n= L*
L={a,b}
L*={ } u {a,b} u {aa, ab, ba, bb}
4.(L*)*= L*
i
0
1
U
i=0 L = L u L
5.(L*)+= L*
Nota: esta cerradura genera TODAS las posibles combinaciones entres los
elementos del lenguaje incluyendo el vaco ( ).
6. (L+)*= L*
7. (L+)+= L+
8. (L1uL2)*= (L1*L2*)*
Tipos de lenguaje
Lenguajes
regulares
Lenguajes no
regulares
Especificar
Especificar
Expresiones
regulares
GIC
Definicin formal:
1. { } es un lenguaje regular
2. Si a pertenece al alfabeto (
3. Si L1 y L2 son lenguajes entonces L1 L2, L1 U L2, L1*, L2* son lenguajes 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
1.4.
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|
Definicin:
1. es una expresin regular.
2. si a pertenece a
Nota: Todas las propiedades del lenguaje se aplican en las expresiones regulares.
Ejemplos N.1:
= {a, b}
a. b*
Alfabeto
Expresin regular
Primer paso: verificar que cada elemento est en el alfabeto, de ser as es una expresin
regular, de lo contrario NO.
Segundo paso: Verificar que la expresin contenga las operaciones bsicas (unin,
concatenacin, cerraduras).
Nota: Habiendo aplicado el primer y segundo paso podemos decir que es una
expresin regular, a y b pertenecen a un alfabeto.
a.
= {a, b, c}
b+a | abc?
Alfabeto
Expresin regular
= {a, b, c}
a*|b*
Ejemplos N.2:
Podemos recordar que un patrn es una regla que describe el conjunto de cadenas de la
entrada que corresponden a un componente lxico.
Alfabeto
Expresin regular
Habiendo aplicado los dos primeros pasos podemos concluir si es una expresin regular.
a*|b* = L*(a) U L*(b)
= (L(a))* U (L(b))*
= {a}* U {b}*
= { ,a,aa,aaa,aaaa,}U{ ,b,bb,bbb,bbbb,}
={ ,a,aa,aaa,aaaa,,b,bb,bbb,bbbb,}
Este lenguaje regular corresponde a la expresin regular.
Nota2: el patrn debe ser general para todas las cadenas del lenguaje
Ejemplo N1:
(a|b)*=L*(a|b)
= ({a}U{b})*
= (a,b)*
={ ,a,b,aa,bb,ab,ba,aaa,aab,aba,abb,baa,bab,bba...}
PATRON: Todas las posibles cadenas que se pueden formar con a y b.
Ejemplo N2:
a(a|b)+
=L(a) L+(a|b)
= {a}({a}U{b})+
= (a)(a,b)+
={a}{a,b,aa,bb,ab,ba,aaa,aab,aba,abb,baa,...}
={aa,ab,aaa,abb,aab,aba,aaaa,aaab,aaba,aabb,abaa,}
PATRON: Todas las posibles cadenas que se pueden formar con a y b con
prefijo a y con longitud mayor o igual a 2.
10
Ejemplo N3:
menos de un carcter haciendo que la longitud de las cadenas formadas sea mnimo dos,
as, la cerradura adecuada sera * porque ella toma un estado de vaco. Las
combinaciones que se deben ir formando con la cerradura son con los elementos a, b,
c, lo que como expresin sera a | b | c. Todo esto produce la expresin regular:
(a|ab)
= L*(a|ab)
= ({a} U {ab})*
= (a, ab)*
= { ,a, ab, aab, aba, aaab, aaba, abaab ,ababa, }
c(a | b | c)*
repetidas
Ejemplo N4:
(a|b)*a(a|b)
= L*(a|b)L(a)L(a|b)
= ({a}U{b})*{a}({a}U{b})
= ({a,b})*{a} ({a,b})
={ ,a,b,aa,bb,ab,ba,aaa,aab,aba,abb,baa,bab,bba,}
{aa,ab}
={aa,ab,aaa,aab,baa,bab,aaaa,aaab,bbaa,bbab,abaa,abab,baaa,baab,aaaaa,aaaab,aaba
a,aabab,abaaa,abaab,...}
PATRON: todas las posibles cadenas que se forman con a y b con longitud
mnimo de 2 y que tenga como penltimo smbolo a
Tambin puede ocurrir que nos del patrn y a partir de este deducir la expresin regular
correspondiente.
Para desarrollar este tipo de ejercicios no existe un mtodo definido. Todo consiste en
familiarizarse con las expresiones de tal manera que al leer una frase (patrn) se pueda
construir intuitivamente la expresin. Para esto ayuda conocer en qu consiste cada una
de las operaciones bsicas (concatenacin, unin, cerradura de Klenne, cerradura
positiva) y comprender claramente su funcionamiento, adems de los alcances de
combinar estas operaciones.
Ejercicio N1: Todas las posibles combinaciones de a, b y c que comiencen con c.
Solucin: Como tiene que comenzar por c, lo obvio es que una c vaya al inicio
concatenada con (como dice en el ejercicio) cualquier cadena entre a, b, y c y esa es otra
expresin en si misma, que tiene un nmero infinito de combinaciones. La mejor manera
de armarlo es con una cerradura, si fuera +, siempre la c estara acompaada por lo
11
Nota: es muy importante que el patrn que propongas sea muy especfico y
comprenda completamente todos los requisitos de la expresin regular.
Ejemplo N2: Todas las cadenas que se puedan formar con a y b que tengan una
longitud mayor o igual a 4.
Solucin.
Todas las posibles combinaciones de a y b se construye con la expresin regular (a|b)*;
pero esto permite que se tengan cadenas de longitud menor que 4, por lo que el nmero
de caracteres que aparezcan se debe controlar as: (a|b)4 y se le concatena cualquier
combinacin entre a y b:
4
*
(a|b) (a|b)
Note que esta expresin tambin se puede escribir:
*
(a|b) (a|b)
(a|b) (a|b)
(a|b) (a|b)
Se pone una cerradura que se repite 3 veces con la cerradura de + porque esta no puede
tomar el valor de vaco.
2.6 Definiciones Regulares
Sea un alfabeto, entonces una definicin regular es una secuencia de definiciones de la
forma:
d1
r1
d2
r2
: :
dn
rn
12
Ejemplo N1: una variable debe empezar en letra y debe ir seguidos de letras y/o dgitos
Solucin: Lo primero es definir los alfabetos que nos servirn para desarrollar la
definicin regular, es importante que se tenga en cuenta que los alfabetos deben estar
definidos por su tipo, es decir, un alfabeto para las letras, otro para los nmeros y otro
para los signos.
1: {a, b, c,..., z, A, B, C,..., Z}
2: {0, 1, 2,..., 9}
Se necesita en este patrn las letras y los dgitos
Letra
[ a | b | c || z | A | B | C |...| Z]
0 | 1 | 2 | . | 9 | dgito
[0-9]
Ahora la definicin regular var comienza con una letra y como el enunciado del ejercicio
especfico que debe ir seguido por letras y/o dgitos, esto lo puedo representar con una
operacin de concatenacin que contenga las dos posibles definiciones letras o dgitos, la
definicin quedara de esta manera:
var
Punto Flotante
Solucin:
1: {0,1,2,....,9}
2: {+,-}
3: {E,e}
Digto
Sig
Exp
[0-9]
(+|-)
(E|e)
?
Solucin:
1: {0,1,2,....,9}
2: {+,-}
Solucin:
[0-9]
(+|-)
[0-9]
(+|-)
Flotante Sig
digto
sig
Digto
Sig
Ejemplo N4:
1: {0,1,2,....,9}
2: {+,-}
3: {.}
Nota: no todo tiene que ser definido. Disminuir la cantidad de smbolos para
poder simplificarlo.
Ent
sig? Digto+
Nota1: dgito debe ser (+) puesto que despus del signo debe de ir un nmero.
Ejemplo N3: Nmero Decimal
may
min
let
sinC
sinI
sinOA
ide
[A-Z]
[a-z]
[may, min]
[ A,B, D-Z, min]
[A-H, J-Z, min]
[B-N, P-Z, min]
may let+(sinC let2 | let sinI let | let2 sinOA)
Solucin:
13
14