gramaticas regulares
TRANSCRIPT
6/9/2008
1
1
Gramáticas Regulares
Sección 3.3.2
2
Autómata de estados finito
Un autómata de estados finito (FSA) es un grafo con
arcos dirigidos y con etiqueta, dos tipos de nodos
(estado final y no final), y un estado inicial único:
Esto es también llamado
máquina de estados.
¿que cadena, que se inicia en
estado A, termina en estado C?
El lenguaje aceptado por la máquina M es un conjunto de
cadenas que se mueve del nodo inicial a un nodo
final, o más formalmente: T(M) = { | (A,) = C} donde A es el nodo inicial y C un nodo final.
3
Mas FSA
Un FSA puede tener más de un estado final:
4
Autómatas Deterministicos
Deterministicos: Para cada estado y para cada miembro
del alfabeto existe exactamente una transición.
No-deterministicos FSA (NDFSA): remueve la restricción.
• En cada nodo existe 0, 1, o más de una transición
para cada símbolo del alfabeto.
• Una cadena es aceptada si existe algún sendero del
estado inicial a algún estado final.
Ejemplo de un FSA no deterministico (NDFSA):
01 es aceptado vía el sendero:
ABD
A pesar de que 01 puede tomar
también los siguientes senderos:
ACC o ABC
y C no es el estado final.
6/9/2008
2
5
Equivalencia de FSA y NDFSA
Resultado inicial importante:
NDFSA = DFSA
Subconjuntos de estados son
Estados en DFSA.
Siga el subconjunto en que
puede estar.
Cualquier cadena desde
{A} a {D} o {CD}
representa un sendero
desde A a D en el
NDFA original.
6
Expresiones regulares
Se puede escribir lenguaje regular como una expresión:
0*11*(0|100*1)1*|0*11*1
Operadores:
• Concatenación
• O (| o algunas veces escrito como )
• Cerramiento de Kleene (* - 0 o más instancias)
7
Gramáticas regulares
Una gramática regular es una gramática
de contexto libre donde toda
producción es una gramática de
contexto libre de una de dos formas:
• X aY
• X a
para X, Y N, a T
Teorema: L(G) para una gramática regular G es un
equivalente a T(M) para FSA M.
La prueba es “constructiva”. Esto es dado G o M,
podemos construir el otro [siguiente slide]
8
Equivalencia de FSA y gramáticas regulares
6/9/2008
3
9
BNF extendido
Existe una notación extendida para las reglas de BNF.
No le añade poder a la sintaxis, es solo una manera
de escribir las producciones:
| - Escoger
( ) - Agrupar
{}* - Repetir - 0 o más veces
{}+ - Repetir - 1 o más veces
[ ] - Opcional
Ejemplo: identificador – una letra seguida de 0 o más
letras o dígitos:
BNF extendido BNF regular
I L { L | D }* I L | L M
L a | b |... M CM | C
D 0 | 1 |... C L | D
L a | b |...
D 0 | 1 |...
10
Notación EBNF para sentencias de asignación
<sentencia de asignación>::= <variable>= <expresión aritmética>
<expresión aritmética>::= <término> {[ + | - ] <término>}*
<término>::= <primario> {[ * | -]<primario>}*
<primario>::= <variable>|<número>|
(<expresión aritmética>)
<variable>::= <identificador>|
<identificador>[<lista subscrita>]
<lista subscrita>::=<expresión aritmética>
{,<expresión aritmética>}*
11
Diagramas sintácticos
También llamados diagramas de ferrocarril.
Trace un sendero en la red: Una L seguida o repetida
por mallas a través de L y D, por ejemplo, BNF
extendido:
L L (L | D)*
12
Diagrama sintáctico para expresiones regulares
6/9/2008
4
13 14
¿Por que nos preocupamos de lenguajes regulares?
Programas están compuestos de tokens:
• Identificador
• Número
• Palabra clave
• Símbolos especiales
Cada una de estas puede ser definidas por gramáticas
regulares. (siguiente slide.)
Problema: Como podemos manejar operadores de símbolos
múltiples (por Ej.., ++ en C, =+ en C, := en Pascal)?
?? –estados finales múltiples?
15
Muestras de clases de token
16
Resumen de FSA
Barrido (Scanner) para un lenguajes tiende a ser un
gigante NDFSA para la gramática (es decir, tiene
reglas desde el estado inicial al estado inicial de
cada tipo de token del slide anterior).
integer
identifier
keyword
symbol