Title: Construyendo expresiones regulares
1Construyendo expresiones regulares
Repetición Dada una expresión regular M, su
cerradura de Kleene es M. Una cuerda está en M
si es la concatenación de cero o más cuerdas,
todas pertenecientes a M. a
"", "a", "aa", "aaa", ...
2Abreviaturas usadas en esta clase
A las cuerdas les llamamos strings.
Omitimos el símbolo de concatenación.
Omitimos el símbolo de epsilon.
Asumimos que la cerradura de Kleene tiene
precedencia sobre la concatenación.
Asumimos que la concatenación tiene precedencia
sobre la alternación.
3Abreviaturas usadas en esta clase
A las cuerdas les llamamos strings.
Omitimos el símbolo de concatenación.
Omitimos el símbolo de epsilon.
Asumimos que la cerradura de Kleene tiene
precedencia sobre la concatenación.
Asumimos que la concatenación tiene precedencia
sobre la alternación.
4Abreviaturas usadas en esta clase
A las cuerdas les llamamos strings.
a ? b ??c
abc
Omitimos el símbolo de epsilon.
Asumimos que la cerradura de Kleene tiene
precedencia sobre la concatenación.
Asumimos que la concatenación tiene precedencia
sobre la alternación.
5Abreviaturas usadas en esta clase
A las cuerdas les llamamos strings.
a ? b ??c
abc
( a ? ) ( a )
Asumimos que la cerradura de Kleene tiene
precedencia sobre la concatenación.
Asumimos que la concatenación tiene precedencia
sobre la alternación.
6Abreviaturas usadas en esta clase
A las cuerdas les llamamos strings.
a ? b ??c
abc
( a ? ) ( a )
ab
a ??(b)
Asumimos que la concatenación tiene precedencia
sobre la alternación.
7Abreviaturas usadas en esta clase
A las cuerdas les llamamos strings.
a ? b ??c
abc
( a ? ) ( a )
ab
a ??(b)
ab c (a
??b) c
8Más abreviaturas
abcd ( a b c d)
b -g bcdefg
b -gM -Qkr bcdefgMNOPQkr
M? ( M ? )
M M ? M
9En resumen
a un caracter ordinario. ? El string
vacío. Otra forma de escribir el string
vacío. M N Alternación, elegir M o N. M ?
N Concatenación, M seguida de N MN Otra
forma de escribir concatenación. M Repetici
ón (cero o más veces). M Repetición (una o
más veces) M? Opcional, cero o una
ocurrencia de M. a -zA -Z Alternación de un
conjunto de caracteres. . Un punto
sustituye cualquier caracter excepto nueva
línea. "a." Strings entre comillas no son
interpretados.
10Algunos ejemplos
( 0 1 ) ??0 Números binarios múltiplos de
2. babba? Strings de a's y b's sin a's
consecutivas. abaaab Strings de a's y
b's que contienen a's consecutivas. (012
3456789) Un dígito. dígito ? dígito Un
entero positivo (posint). -?posint Un entero
(int). int (. posint)? Un real
11Analizadores Léxicos
Con cuál regla hace match el string "if8"?
Con cuál regla hace match el string "if 8"?
Necesitamos un par de reglas más!
12Dos reglas más
13Ahora sí
if8 por match más largo ID if 8 por
prioridades IF NUM
14Pregunta
- Qué expresión regular hace match con los números
desde 0 hasta 256 y nada más?
15Cómo reconocemos RE's?
La expresiones regulares son útiles para
describir strings, pero necesitamos reconocerlos.
Esta es la diferencia entre conocimiento
declarativo (qué es) y conocimiento imperativo
(cómo hacerlo).
Así que usamos expresiones regulares para
describir los strings, pero usamos automata
finitos para reconocerlos.