Sunteți pe pagina 1din 6

Unidad 2 - Expresiones Regulares.

2.1. Definicin formal de una ER.


Es un equivalente algebraico para un autmata.
Utilizado en muchos lugares como un lenguaje
para describir patrones en texto que son
sencillos pero muy tiles.
Pueden definir exactamente los mismos
lenguajes que los autmatas pueden describir:
Lenguajes regulares.
Ofrecen algo que los autmatas no: Manera
declarativa de expresar las cadenas que
queremos aceptar.
Dado un alfabeto Dado un alfabeto , una , expresin
regular sobre expresin regular sobre se define de
forma recursiva:
ER primitivas: , , {a | a }
Si y son ER, entonces son tambin ER: +
(unin), (concatenacin), * (cierre), ().
No existen otras reglas para la construccin de
ER sobre .
Ejemplos de usos.
Comandos de bsqueda, e.g., grep de UNIX.
sistema de formato de texto: Usan notacin de
tipo expresin regular para describir patrones.
Convierte la expresin regular a un DFA o un
NFA y simula el autmata en el archivo de
bsqueda.
Generadores de analizadores - Lxicos. Como
Lex o Flex.
Los analizadores lxicos son parte de un
compilador. Dividen el programa fuente en
unidades lgicas (tokens) divide el programa
fuente en unidades.
Produce un DFA que reconoce el token.
Las expresiones regulares denotan lenguajes.
Por ejemplo, la expresin regular: 01* + 10* denota todas
las cadenas que son o un 0 seguido de cualquier
cantidad 1's o un 1 seguida de cualquier cantidad de
0's.
Operaciones de los lenguajes:
Unin: Si L y M son dos lenguajes, su unin se
denota por L U M.
Concatenacin: La concatenacin es: LM o
L.M.
Cerradura (o cerradura de Kleene): Si L es un
lenguaje su cerradura se denota por L *.
Si E es una expresin regular, entonces L(E) denota el
lenguaje que define E. Las expresiones se construyen
de la manera siguiente:
Las contantes y son expresiones regulares
que representan a los lenguajes L (Q) = {Q} y L
() L = respectivamente.
Si a es un smbolo, entonces es una expresin
regular que representan al lenguaje: L (a) = {a}.
2.2. Operaciones
Unin o Alternativa: Consideremos dos lenguajes
diferentes definidos sobre el mismo alfabeto
L1 W() y L2 W(). Se denomina unin de ambos
lenguajes al lenguaje formado por las palabras de
ambos lenguajes:
L1 U L2={ x | x L1 x L2}
Concatenacin: Consideremos dos lenguajes
definidos sobre el mismo alfabeto, L1 y L2. La
concatenacin o producto de estos lenguajes es
el lenguaje L1 L2= { xy / x L1 y x L2} Las
palabras de este lenguaje estarn formadas al
concatenar cada una palabra del primero de los
lenguajes con otra del segundo.
La concatenacin de lenguajes con el lenguaje
vaci es L = L =
Potencia de un lenguaje: Se define la potencia i-sima
de un lenguaje a la operacin de concatenarlo consigo
mismo i veces.
Li= LLL ....L
|------------|
i
Clausura positiva de un lenguaje: Se define la clausura
positiva de un lenguaje L:

L + = U L i
i=1
Lenguaje obtenido uniendo el lenguaje con todas sus
potencias posibles excepto L. Si L no contiene la
palabra vaca, la clausura positiva tampoco
Cierre o Clausura de un lenguaje: Se define el cierre o
clausura de un lenguaje L como :

L* = U Li
i=0
Lenguaje obtenido uniendo el lenguaje con todas sus
potencias posibles, incluso L. Todas las clausuras
contienen la palabra vaca.
Existen tres operaciones bsicas que se pueden realizar
sobre las ER:
Seleccin de alternativas : Se indica con el
operador |(barra vertical). Si r y s son ER,
entonces r | s es una ER que define a cualquier
cadena que concuerde con una r o una s,
tambin se dice que r | s , es la unin de los
lenguajes de r y s y lo podemos definir: L( r | s )
= L( r ) U L( s ). Esta operacin se puede
extender a ms de dos ER.
Concatenacin: Se indica con la
yuxtaposicin de las ER. Si r y s son ER,
entonces rs es una ER que define a cualquier
cadena que concuerde con la concatenacin
de r y s , esta operacin la podemos definir:
L(rs) = L(r)L(s).Esta operacin se puede
extender a ms de dos ER.
Repeticin o Cerradura: Tambin se conoce con el
nombre de cerradura de Kleene. Se indica con el
operador *. Si r es una ER, entonces r* es una ER que
define a las cadenas de caracteres representadas por
la concatenacin repetida de r en n veces, o sea que lo
podemos definir como: L(r*) = L(r)*o tambin lo
podemos definir como la unin infinita de conjuntos r
:r* n = r 0 r 1 r 2...r n.
2.3 Aplicaciones en problemas reales.
Una de las principales aplicaciones de los hermanos
Deitel, son las expresiones regulares que facilitan la
construccin de un compilador. A menudo se utiliza
una expresin regular larga y compleja para validar la
sintaxis de un programa. Si el cdigo del programa no
concuerda con la expresin regular, el compilador
sabe que hay un error de sintaxis dentro del cdigo.
Generalmente convierten la expresin regular a un
autmata finito no determinista y despus construyen
el autmata finito determinista.
Otra aplicacin del mismo libro es en los editores de texto.
Tambin encontramos a las expresiones regulares en
la biologa molecular. Tambin hay esfuerzos
importantes para tratar de representar cadenas como
generadas por expresiones regulares o por lenguajes
regulares.

S-ar putea să vă placă și