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
Top Related