Sei sulla pagina 1di 9

Lenguajes y expresiones

regulares
Las expresiones regulares pueden definir de forma exacta los mismos lenguajes que describen
los distintos tipos de autómatas: los lenguajes regulares. Sin embargo, las expresiones regulares
ofrecen algo que los autómatas no proporcionan: una forma declarativa para expresar las
cadenas que deseamos aceptar.
Algunos ejemplos son los siguientes

 Comandos de búsqueda tales como el comando grep de UNIX o


comandos equivalentes para localizar cadenas en los exploradores web o
en los sistemas de formateo de texto.

 Generadores de analizadores léxicos


Operadores de las expresiones
regulares
 Las expresiones regulares denotan lenguajes. Por ejemplo, la expresión
regular 01∗ +10∗ define el lenguaje que consta de todas las cadenas que
comienzan con un 0 seguido de cualquier número de 1s o que comienzan
por un 1 seguido de cualquier número de 0s.
Estas operaciones son:
 La unión de dos lenguajes L y M, designada como L ∪ M, es el conjunto de
cadenas que pertenecen a L, a M o a ambos.
 La concatenación de los lenguajes L y M es el conjunto de cadenas que
se puede formar tomando cualquier cadena de L y concatenándola con
cualquier cadena de M.
BASE. El caso básico consta de tres
partes:
 1. Las constantes ε y /0 son expresiones regulares, que representan a los
lenguajes {ε } y /0, respectivamente. Es decir, L(ε) = {ε } y L( /0) = / 0.
 2. Si a es cualquier símbolo, entonces a es una expresión regular. Esta
expresión representa el lenguaje {a}.
 Es decir, L(a)={a}.Observe que utilizamos la fuente en negrita para indicar
la expresión correspondiente a un símbolo. La correspondencia, por
ejemplo, que a hace referencia a a, es obvia.
 3. Una variable, normalmente escrita en mayúsculas e itálicas, como L,
representa cualquier lenguaje.
PASO INDUCTIVO

 1. Si E y F son expresiones regulares, entonces E +F es una expresión regular


que representa la unión de L(E) y L(F). Es decir, L(E +F) = L(E) ∪ L(F).
 2. Si E y F son expresiones regulares, entonces EF es una expresión regular
que representa la concatenación de L(E) y L(F). Es decir, L(EF) = L(E)L(F).
 3. Si E es una expresión regular, entonces E∗ es una expresión regular, que
representa la clausura de L(E). Es decir, L(E∗) = L(E)∗.
 4. Si E es una expresión regular, entonces (E), una E encerrada entre
paréntesis, es también una expresión regular, que representa el mismo
lenguaje que E. Formalmente; L (E) = L(E).
Precedencia de los operadores en las
expresiones regulares

 Como con otras álgebras, los operadores de las expresiones regulares tienen un
orden de “precedencia” prefijado, lo que significa que se asocian con sus
operan dos en un determinado orden. Estamos familiarizados con el concepto
de precedencia en las expresiones aritméticas ordinarias.
En las expresiones regulares,el orden de
precedencia de los operadores es el
siguiente:
 1. El operador asterisco () es el de precedencia más alta. Es decir, se
aplica sólo a la secuencia más corta de símbolos a su izquierda que
constituye una expresión regular bien formada.
 2. El siguiente en precedencia es el operador de concatenación, o
“punto”. Después de aplicar todos los operadores a sus operan dos,
aplicamos los operadores de concatenación a sus operan dos. Dado que
la concatenación es una operación asociativa, no importa en qué orden
se realicen las sucesivas concatenaciones, aunque si hay que elegir, las
aplicaremos por la izquierda. Por ejemplo, 012 se aplica así: (01)2.
 3. Por último, se aplican todos los operadores de unión (+) a sus operan
dos. Dado que la unión también es asociativa, de nuevo no importa en
que orden se lleven a cabo, pero supondremos que se calculan
empezando por la izquierda.
Autómatas finitos y expresiones
regulares
 Aunque las expresiones regulares describen los lenguajes de manera
completamente diferente a como lo hacen los autómatas finitos, ambas
notaciones representan exactamente el mismo conjunto de lenguajes,
que hemos denominado “lenguajes regulares”.
De los AFD a las expresiones regulares

 La construcción de una expresión regular para definir el lenguaje de


cualquier AFD tiene truco. Consiste básicamente en construir expresiones
que describan conjuntos de cadenas que etiqueten ciertos caminos del
diagrama de transiciones de un AFD. Sin embargo, estos caminos sólo
pueden pasar por un subconjunto limitado de estados.

Potrebbero piacerti anche