2 Expresiones Regulares.


2.1. Definición formal de una ER.



Resultado de imagen para expresiones regulares
Es un equivalente algebraico para un autómata.
  • 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 autómatas pueden describir: Lenguajes regulares.
  • Ofrecen algo que los autómatas no: Manera declarativa de expresar las cadenas que queremos aceptar.
Dado un alfabeto Dado un alfabeto Σ, una , expresión regular sobre expresión regular sobre Σ se define de forma recursiva:
  • ER primitivas: Φ, λ, {a | a ЄЄЄ Σ Є}
  • Si α y β son ER, entonces son también ER: α + β (unión), α β (concatenación), α* (cierre), (α).
  • No existen otras reglas para la construcción de ER sobre Σ.
Ejemplos de usos.
  • Comandos de búsqueda, e.g., grep de UNIX.
  • sistema de formato de texto: Usan notación de tipo expresión regular para describir patrones.
  • Convierte la expresión regular a un DFA o un NFA y simula el autómata en el archivo de búsqueda.
  • Generadores de analizadores - Léxicos. Como Lex o Flex.
  • Los analizadores léxicos son parte de un compilador. Dividen el programa fuente en unidades lógicas (tokens) divide el programa fuente en unidades.
  • Produce un DFA que reconoce el token.
Las expresiones regulares denotan lenguajes.

Resultado de imagen para expresiones regulares







2.2. Operaciones
Unión o Alternativa: Consideremos dos lenguajes diferentes definidos sobre el mismo alfabeto L1  W() y L2  W(). Se denomina unión de ambos lenguajes al lenguaje formado por las palabras de ambos lenguajes:
  • L1 U L2={ x | x  L1 ó x  L2}
Concatenación: Consideremos dos lenguajes definidos sobre el mismo alfabeto, L1 y L2. La concatenación o producto de estos lenguajes es el lenguaje L1 L2= { xy / x  L1 y x  L2} Las palabras de este lenguaje estarán formadas al concatenar cada una palabra del primero de los lenguajes con otra del segundo.
La concatenación de lenguajes con el lenguaje vació es ΦL = L Φ = Φ

Existen tres operaciones básicas que se pueden realizar sobre las ER:
  • Selección 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, también se dice que r | s , es la unión de los lenguajes de r y s y lo podemos definir: L( r | s ) = L( r ) U L( s ). Esta operación se puede extender a más de dos ER.
  • Concatenación: Se indica con la yuxtaposición de las ER. Si r y s son ER, entonces rs es una ER que define a cualquier cadena que concuerde con la concatenación de r y s , esta operación la podemos definir: L(rs) = L(r)L(s).Esta operación se puede extender a más de dos ER.
Repetición o Cerradura: También 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 concatenación repetida de r en n veces, o sea que lo podemos definir como: L(r*) = L(r)*o también lo podemos definir como la unión 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 construcción de un compilador. A menudo se utiliza una expresión regular larga y compleja para validar la sintaxis de un programa. Si el código del programa no concuerda con la expresión regular, el compilador sabe que hay un error de sintaxis dentro del código.
Generalmente convierten la expresión regular a un autómata finito no determinista y después construyen el autómata finito determinista.



Comentarios

  1. Casino Del Sol Resort, CA - Mapyro
    Get directions, reviews and information for Casino 부천 출장마사지 Del Sol Resort, 천안 출장마사지 CA 성남 출장안마 in Highland, CA. 남원 출장마사지 Address: 21900 Highway 50. 청주 출장안마 Location: Hollywood Hills

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

6 Análisis Sintáctico

5 Análisis léxico