Gramáticas Regulares. Expresiones Regulares. Ecuaciones Características de una GR. Obtener la ER de una GR. Derivada de una ER. Obtener la GR de una ER.
1. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
Recordemos..... :
Las GR corresponden al Tipo 3 de la Jerarquía de Chomsky.
Sus reglas pueden tener un formato regular por la derecha o
regular por la izquierda, pero no ambos.
Tienen la capacidad de generar solo Lenguajes Regulares.
Sirven para describir el Nivel Lexicográfico de un Lenguaje.
El modelo aceptor correspondiente es el Autómata Finito.
Su formato estándar es: N1 → t N2 , N → t , S → λ
ING. JORGE BUABUD
2. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
Obtención del Formato Estándar:
Pasos a seguir para obtener el Formato Estándar de Chomsky tipo 3:
1.- Eliminar reglas innecesarias.
2.- Eliminar el axioma S de la derecha, si es que λ ∈ L(GR).
3.- Eliminar reglas de redenominación o renombrado: N1 → N2
→
4.- Eliminar reglas de borrado: N→ λ
5.- Realizar las sustituciones necesarias para reducir a uno la longitud de
las secuencias de terminales que hubiera en las reglas.
ING. JORGE BUABUD
3. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
1.- Eliminar reglas innecesarias: Son producciones que no aportan nada.
1.1.- Reglas que tienen no-terminales inútiles, es decir aquellos N que
no cumplen con: S ⇒* αNβ y N⇒* w
β ⇒
donde S es el axioma, w ∈ ΣT* y α,β ∈ Σ*
β
1.2.- Reglas de la forma: N→N→
2.- Eliminar el axioma de la derecha: Si el axioma S aparece en la
derecha de alguna producción y S ⇒* λ , entonces se realiza el
siguiente artificio:
2.1.- se introduce un nuevo símbolo inicial S1
2.2.- se agrega a las producciones originales las reglas: S1 → S | λ
ING. JORGE BUABUD
4. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
3.- Eliminar reglas de redenominación: Se reemplaza las producciones
de la forma N1→N2 , por las reglas que surgen de reemplazar en las
mismas N2 por las partes derechas de sus producciones.
4.- Eliminar reglas de borrado: Se reemplaza las producciones de la
forma N→λ , por las reglas que surgen de reemplazar N por λ,
→λ
en todas las reglas donde figure N; a excepción de la regla S → λ ,
donde S es el axioma.
5.- Reducción de longitud: Se reemplaza las reglas de la forma
N1 → t1t2...tKN2 por las reglas N1→t1M1 , M1→t2M2 , .... , MK-1→ tKN2
donde los Mi son nuevos no-terminales (en forma similar si la GR es
por la izquierda).
ING. JORGE BUABUD
5. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
Ejemplo de obtención del formato estándar de una GR:
Supongamos la siguiente GR por la derecha:
G = 〈 ΣN , ΣT , S , P 〉
S → abaB | bb | λ | A
ΣN = {S, A, B, C, D, E} A → baS | aabC | a
B → aaA | B | λ
ΣT = {a, b}
C → baC | aC
P= D → bbB | aaa | abaD
E → aaE | abC
ING. JORGE BUABUD
6. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
1) Eliminación de reglas innecesarias:
S → abaB | bb | λ | A
A → baS | a
B → aaA | λ
2) Eliminación del axioma a la derecha:
S1 → S | λ
S → abaB | bb | λ | A
A → baS | a
B → aaA | λ
ING. JORGE BUABUD
7. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
3) Eliminación de reglas de redenominación:
S1 → abaB | bb | baS | a | λ
S → abaB | bb | λ | baS | a
A → baS | a
B → aaA | λ
4) Eliminación de reglas de borrado:
S1 → abaB | bb | baS | a | λ | ba | aba
S → abaB | bb | baS | a | ba | aba
A → baS | a | ba
B → aaA
ING. JORGE BUABUD
8. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
5) Reducción de la longitud:
S1 → aF | bH | bI | a | λ | bJ | aK
F → bG
G → aB Los otros componentes de G:
H→b ΣN = { S1, A, B, F, G, H, I, J, K, L, S}
I → aS ΣT = {a, b}
J→a
donde S1 es el nuevo axioma
K → bJ
S → aF | bH | bI | a | bJ | aK
A → bI | a | bJ
B → aL
L → aA
ING. JORGE BUABUD
9. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
Equivalencia entre GR por derecha y GR por izquierda:
Los dos formatos posibles para una GR son equivalentes.
Veamos un algoritmo para pasar del formato por izquierda al formato
por derecha, partiendo de una GR en su forma estándar:
1.- Si el axioma figura en alguna parte derecha de las reglas, se procede
a transformar la GR de la siguiente forma:
1.1.- Agregar un nuevo símbolo no-terminal L
∈Σ ∈Σ
1.2.- Si S es el axioma, t∈ΣT y N∈ΣN , entonces:
1.2.1.- Para cada regla de la forma S → Nt
se crea una regla L → Nt
1.2.2.- Cada regla de la forma N → St
se cambia por la regla N → Lt
ING. JORGE BUABUD
10. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
2.- Se crea un grafo dirigido:
2.1.- Se crea un nodo para cada no-terminal N y otro para λ
2.2.- Para cada regla de la forma N1 → N2t
se crea un arco desde el nodo N1 al nodo N2 con rótulo t
2.3.- Para cada regla de la forma N → t
se crea un arco desde el nodo N al nodo λ con etiqueta t
2.4.- Si existe una regla S → λ
se crea un arco sin rótulo desde el nodo S al nodo λ
3.- Se transforma este grafo de la siguiente manera:
3.1.- Se intercambian las etiquetas de los nodos S y λ
3.2.- Se invierte el sentido de todos los arcos
ING. JORGE BUABUD
11. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
4.- Se transforma el grafo en un conjunto de reglas:
4.1.- Para cada arco etiquetado con t que va del nodo N1 al nodo N2
se crea la regla N1 → tN2
4.2.- Para cada arco etiquetado con t que va del nodo N al nodo λ
se crea la regla N → t
4.3.- Si existe un arco del nodo del axioma S al nodo de λ
se crea una regla S → λ
En forma similar se puede definir un algoritmo para
transformar una GR por derecha en su formato por
izquierda equivalente.
ING. JORGE BUABUD
12. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
Ejemplo de conversión de GR por Izquierda a Derecha:
Supongamos una GR por izquierda con las siguientes producciones:
S → Ba | Ab , A → Sa | Ab , B → Bb | a
1.- Agregamos un nuevo no-terminal C y las reglas:
S → Ba | Ab , A → Ca | Ab , B → Bb | a
C → Ba | Ab
2.- Grafo: b
a B a λ
S b a
a
A C
b b
ING. JORGE BUABUD
13. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
GRAMÁTICAS REGULARES (GR):
3) Transformamos el grafo:
b
a B a S
λ b a
a
A C
b b
4) Creamos las reglas de la GR por la derecha a partir del grafo:
S → aB
A → bC | bA | b
B → aC | bB | a
C → aA
ING. JORGE BUABUD
14. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Lenguaje Regular (LR):
Un LR es el lenguaje generado por una GR y se define mediante
las siguientes cláusulas:
1) Todo lenguaje finito es un LR
2) Si L1 y L2 son LR entonces L1∪L2 y L1.L2 también son LR
3) Si L es un LR entonces L* también es un LR
4) Todo LR se puede definir mediante las cláusulas 1, 2 y 3
ING. JORGE BUABUD
15. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Ejemplos de LR: Consideremos el alfabeto Σ={a, b}
L1 = { } = Φ
λ
L2 = {λ} = Lλ
L3 = {a, b}
L4 = {aa, ab, ba, bb}
λ
L5 = {λ, aba, aaa, bab, bbb}
L6 = L3 . L5 ∪ L4
L7 = L5 * . L4
L8 = L4 . L4 *
ING. JORGE BUABUD
16. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Expresión Regular (ER):
Es una forma algebraica que se define sobre un alfabeto
base Σ y un alfabeto especial Σ’ = {+, *, • , Φ , λ , ( , ) }, con
Σ y Σ’ disjuntos, mediante las siguientes cláusulas:
1) Φ, λ, x∈Σ son ER
∈Σ
2) Si E1 y E2 son ER entonces E1+E2 y E1.E2 también son ER
3) Si E es una ER entonces E* y (E) también son ER
4) Todo ER se puede definir mediante las cláusulas 1, 2 y 3
ING. JORGE BUABUD
17. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Correspondencia entre las ER y los LR:
Aunque es casi obvio, ER LR
la siguiente tabla Φ {}
formaliza la relación λ λ
{λ}
x {x}
entre ER y LR:
R1+R2 L1∪L2
R1.R2 L1.L2
R* L*
ING. JORGE BUABUD
18. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Ejemplos de ER: Consideremos el alfabeto base Σ={a, b}
E1 = Φ
E2 = λ
E3 = a+b
E4 = aa+ab+ba+bb
E5 = λ+aba+aaa+bab+bbb
λ
E6 = E3.E5+E4 = (a+b).(λ+aba+aaa+bab+bbb)+(aa+ab+ba+bb)
λ
E7 = E5* . E4 = (λ+aba+aaa+bab+bbb)*.(aa+ab+ba+bb)
E8 = E4 . E4* = (aa+ab+ba+bb).(aa+ab+ba+bb)*
ING. JORGE BUABUD
19. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Algunas aplicaciones de las ER:
En general las ER se asocian con los lenguajes regulares y
están presentes en diversas aplicaciones, por ejemplo:
1) Para descripción de patrones textuales:
La mayoría de los procesadores de texto utilizan variantes de las
ER para facilitar la búsqueda de palabras en un texto, como los
“comodines” del Word . (Ver el help del MS-Word 2007).
También se utilizan en la representación de cadenas de caracteres
en muchos sistemas operativos, como en el GNU/Linux. (Ver
página web http://iie.fing.edu.uy/~vagonbar/unixbas/expreg.htm)
ING. JORGE BUABUD
20. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
2) Para representar estructuras algorítmicas:
En el campo del análisis de algoritmos se utilizan ER para
representar las estructuras básicas de control, por ejemplo:
a
b
a.(b.(c+d))*.e
d c
e
ING. JORGE BUABUD
21. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
3) Para describir el léxico de un lenguaje de programación:
Por ejemplo para el lenguaje C++:
PalabrasClaves = main+if+else+while+do+switch+case+......
Dígitos = 1+2+3+4+5+6+7+8+9
NúmeroEnteroSinSigno = 0+Dígitos.(Dígitos+0)*
Letra = a+b+c+d+..............+z
Identificador = (Letra+ _ ).(Letra+ _ +Dígitos+0)*
ING. JORGE BUABUD
22. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Propiedades de las ER:
Existen muchas propiedades asociadas a las ER, a continuación
se muestran las más importantes:
1) Φ* = λ
2) E . E* = E* . E
3) E* = λ + E . E*
4) (E1* . E2*)* = (E1+ E2)* = (E1* . E2)* . E1*
λ
5) E* = (λ+E+E2+E3+....+EN-1) . (EN)*
ING. JORGE BUABUD
23. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Sistema de Ecuaciones Características de una GR:
Dada una GR se puede obtener un conjunto de definiciones
∈Σ
regulares de la forma: X = R + T.X , donde X∈ΣN y (R,T)
son ER sobre Σ, del siguiente modo:
1) Agrupar todas las reglas que tengan igual parte izquierda
2) Igualar cada no-terminal X con la unión de todas las partes
derechas correspondientes, usando el conectivo “+”
3) Sustituir la yuxtaposición de símbolos con la
concatenación de los mismos, usando el conectivo “•”
ING. JORGE BUABUD
24. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Ejemplo de Ecuaciones Características de una GR:
G = 〈 ΣN , ΣT , P , S 〉
Sistema de Ecuaciones
ΣN = { S, A, B, C } Características
ΣT = { a, b, c } S = a.A+b.B+c.C
P: S → aA | bB | cC A = b.A+a.B
A → bA | aB B = c.B+a
B → cB | a
C = c.C+c
C → cC | c
ING. JORGE BUABUD
25. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Solución de una ecuación genérica: X=R+T.X
Mediante los siguientes pasos podemos deducir una expresión
para X tal que cumpla dicha igualdad:
1) Partimos de la propiedad de la expresión regular T:
T* = λ + T . T*
2) Pos-concatenamos con la expresión regular R:
T*.R = ( λ + T . T*).R
3) Resolvemos:
T*.R = R + T . T*.R
4) Por simple comparación deducimos que: X = T*.R
ING. JORGE BUABUD
26. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Obtención de la ER del lenguaje generado por una GR:
1) Se plantea el Sistema de Ecuaciones Características.
2) Se resuelve el sistema mediante método de sustitución y
aplicación de la solución de la ecuación genérica.
3) La ER del lenguaje generado por la GR, es la solución
correspondiente al axioma de la gramática.
ING. JORGE BUABUD
27. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Ejemplo de obtención de la ER de una GR:
Dando continuidad al ejemplo anterior de ecuaciones
características, tenemos:
C = c*.c
B = c*.a
A = b.A+a.c*.a
S = a.b*.a.c*.a+b.c*.a+c.c.c*
A = b*.a.c*.a
S = a.b*.a.c*.a+b.c*.a+c.c*.c
ING. JORGE BUABUD
28. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Derivada de una ER:
La derivada de una expresión regular “E” respecto a un símbolo
Σ
“x” perteneciente a un alfabeto “Σ”, se define como:
Dx(E) = {w / x.w ∈ E}
Es decir del conjunto de palabras “w” que están representadas
por “E”, se selecciona aquellas que comienzan por el símbolo
“x” respecto al que se deriva y la derivada será el conjunto de
los restos de esas palabras sin el prefijo “x”.
ING. JORGE BUABUD
29. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Propiedades de la Derivada de una ER:
∈Σ
Para todo x,y∈Σ se cumple que:
1) Dx(Φ) = Φ
Φ 2) Dx(λ) = Φ
λ
3) Dx(x) = λ ≠
4) Dx(y) = Φ con y≠x
5) Dx(E1+E2) = Dx(E1)+Dx(E2)
λ∈E
λ si λ∈ 1
6) Dx(E1.E2) = Dx(E1).E2+f(E1).Dx(E2) con f(E1)=
λ∉E
Φ si λ∉ 1
7) Dx(E*) = Dx(E).E*
ING. JORGE BUABUD
30. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Ejemplo de Derivadas de una ER:
Supongamos la siguiente ER: E = a*.b.(a+b)*.b
Da(E) = Da(a*).b.(a+b)*.b+f(a*).Da(b.(a+b)*.b)
λ
= Da(a).a*.b.(a+b)*.b+λ.(Da(b).(a+b)*.b+f(b).Da((a+b)*.b))
= λ.a*.b.(a+b)*.b+Φ.(a+b)*.b+Φ.Da((a+b)*.b)
Φ Φ
Φ Φ
= a*.b.(a+b)*.b+Φ+Φ = a*.b.(a+b)*.b = E
Db(E) = Db(a*).b.(a+b)*.b+f(a*).Db(b.(a+b)*.b)
= Φ.b.(a+b)*.b+λ.(Db(b).(a+b)*.b+f(b).Db((a+b)*.b))
λ
= Φ+λ.(a+b)*.b+Φ.Db((a+b)*.b) = (a+b)*.b
λ Φ
ING. JORGE BUABUD
31. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Composición de Derivadas de una ER:
Se puede componer derivadas de la siguiente forma:
Dxy(E) = Dy(Dx(E))
En el ejemplo anterior tendríamos:
Dab(E) = Db(Da(E)) = Db(E) = (a+b)*.b
Dba(E) = Da(Db(E)) = Da((a+b)*.b)
= Da((a+b)*).b+f((a+b)*).Da(b)
λΦ
= Da(a+b).(a+b)*.b+λ.Φ = (a+b)*.b
ING. JORGE BUABUD
32. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Obtención de la GR que genera el lenguaje de una ER:
Dada una ER E0 y el conjunto D de todas las ER Ei distintas que se
obtienen por derivación compuesta con respecto a todos los símbolos x
de Σ, el alfabeto base de E0 ; los componentes de la gramática G que
genera el lenguaje definido por E0 son:
ΣN = {E0} ∪ D , ΣT = Σ , S = E0
Si Dx(E1)=E2 , E2≠ λ , E2≠Φ , crear la regla E1 → x E2
λ∈D
Si λ∈ x(E1) , crear una regla E1 → x
P= Si λ∈E0 , crear una regla E0 → λ
λ∈
Φ
Si Dx(E1)=Φ , no crear ninguna regla
ING. JORGE BUABUD
33. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
Ejemplo de obtención de una GR a partir de una ER:
Partamos de la ER del ejemplo anterior: E0 = a*.b.(a+b)*.b
Da(E0) = E0
Db(E0) = (a+b)*.b = E1
Da(E1) = E1
Db(E1) = Db((a+b)*.b) = Db((a+b)*).b+f((a+b)*).Db(b)
λλ λ
= Db(a+b).(a+b)*.b+λ.λ = (a+b)*.b+λ = E2
λ Φ
Da(E2) = Da(E1)+Da(λ) = E1+Φ = E1
λ Φ
Db(E2) = Db(E1)+Db(λ) = E2+Φ = E2
ING. JORGE BUABUD
34. U.T.N. – F.R.T. LENGUAJES REGULARES Y
S. y S. de los L.
AUTÓMATAS FINITOS
EXPRESIONES REGULARES (ER):
De tal manera que:
ΣN = {E0 , E1 , E2}
ΣT = {a, b}
S = E0
E0 → aE0 | bE1
E0 → aE0 | bE1
P= E1 → aE1 | bE2 | b ≡
E1 → aE1 | bE1 | b
E2 → aE1 | bE2 | b
con ΣN = {E0 , E1}
ING. JORGE BUABUD