Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Repaso LenguajesFormales PDF
Repaso LenguajesFormales PDF
Profesor
Federico Peinado
Ingeniería en Informática
Facultad de Informática – Universidad Complutense de Madrid
Curso 2009-2010
Lenguajes formales
Procesadores de Lenguaje
Ingeniería en Informática R.1
Clasificación de gramáticas formales
Procesadores de Lenguaje
Ingeniería en Informática R.2
Lenguajes regulares
Procesadores de Lenguaje
Ingeniería en Informática R.3
Expresiones regulares (ERs)
Procesadores de Lenguaje
Ingeniería en Informática R.5
Ejemplos de expresiones regulares
Procesadores de Lenguaje
Ingeniería en Informática R.6
Gramáticas formales
Procesadores de Lenguaje
Ingeniería en Informática R.7
Gramáticas regulares
Procesadores de Lenguaje
Ingeniería en Informática R.8
Autómatas finitos (AFs)
Procesadores de Lenguaje
Ingeniería en Informática R.9
Comportamiento de un autómata finito
Procesadores de Lenguaje
Ingeniería en Informática R.10
Notaciones para autómatas finitos
Estados/Símbolos x y …
eo ei - …
e1 ej ek …
… … … …
Procesadores de Lenguaje
Ingeniería en Informática R.11
Notaciones para autómatas finitos
a
a a
eo e1 e2
b
b
a a,b
eo e1 e2
a,b
Procesadores de Lenguaje
Ingeniería en Informática R.12
Ejemplos de autómatas finitos
0 e1 [0-9]
eo e2
[1-9] e2
0 [0-9]
Números naturales +,-
eo e1 e3
λ [1-9]
[a-z],[A-Z],[0-9]
eo e1
[a-z],[A-Z]
Identificadores (básicos)
Procesadores de Lenguaje
Ingeniería en Informática R.13
Expresiones regulares, gramáticas regulares y autómatas finitos
Procesadores de Lenguaje
Ingeniería en Informática R.14
Lenguajes incontextuales
Procesadores de Lenguaje
Ingeniería en Informática R.15
Gramáticas incontextuales
Procesadores de Lenguaje
Ingeniería en Informática R.16
Más sobre gramáticas formales (incontextuales)
Procesadores de Lenguaje
Ingeniería en Informática R.17
Ejemplo de derivación
Gbin
bits ⇒ bits bit ⇒ bits bit bit ⇒
bit bit bit ⇒ 1 bit bit ⇒ 1 0 bit ⇒ 1 0 1
Procesadores de Lenguaje
Ingeniería en Informática R.18
Más sobre gramáticas formales (incontextuales)
Procesadores de Lenguaje
Ingeniería en Informática R.19
Árboles de derivación
Procesadores de Lenguaje
Ingeniería en Informática R.20
Ejemplo de árbol de derivación (estructura)
Gbin
bits
bits bit
bits bit 1
bit 0
Procesadores de Lenguaje
Ingeniería en Informática R.21
Ejemplo de gramática incontextual ambigua
Gfbf
Terminales: p, ∧, ∨, ¬
No terminales: fbf
Axioma: fbf
Producciones:
fbf → p
fbf → ¬ fbf
fbf → fbf ∧ fbf
fbf → fbf ∨ fbf
Procesadores de Lenguaje
Ingeniería en Informática R.22
Ejemplo de gramática incontextual ambigua
p ∧ p ∨ p
fbf
fbf
fbf ∨ fbf
fbf ∧ fbf
p fbf ∨ fbf ∧
fbf fbf p
p p p p
Basta con encontrar dos estructuras distintas para una misma sentencia
de un lenguaje para demostrar que su gramática es ambigua
Procesadores de Lenguaje
Ingeniería en Informática R.23
Autómatas a pila (APs)
Procesadores de Lenguaje
Ingeniería en Informática R.24
Ejemplo de autómata a pila
APbin(equivalente a Gbin)
A = {0, 1}
P = {0, 1, bits, bit, $}
E = {x0, x1, x2}
p0 = $
e0 = x0
Definición parcial de t:
t(<xo,λ,$>)= {<x1,$ bits>}
t(<x1,λ,bits>)= {<x1,bit>, <x1,bit bits>}
t(<x1,λ,bit>)= {<x1,0>, <x1,1>}
t(<x1,0,0>)= {<x1,λ>}
t(<x1,1,1>)= {<x1,λ>}
t(<x1,λ,$>)= {<x2,$>}
F = {x2}
Procesadores de Lenguaje
Ingeniería en Informática R.25
Documentación técnica de un lenguaje de programación
Procesadores de Lenguaje
Ingeniería en Informática R.26
Notación BNF
Procesadores de Lenguaje
Ingeniería en Informática R.27
Ejemplo en notación BNF
Procesadores de Lenguaje
Ingeniería en Informática R.28
Notación EBNF
BNF EBNF
TERMINAL “terminal”
Metasímbolo Metasímbolo
::= Equivalencia ::= Equivalencia
| Alternativa | Alternativa
(...) Agrupación
[...] Aparición opcional
{...} Aparición 0, 1 o más veces
(son ERs a la derecha de cada producción)
Procesadores de Lenguaje
Ingeniería en Informática R.30
Diagramas sintácticos
TERMINAL No Terminal
*En las reglas de producción el no terminal
de la izquierda se deja sin recuadro
Alternativa
Procesadores de Lenguaje
Ingeniería en Informática R.31
Ejemplo con diagramas sintácticos
Nº entero positivo
Dígito
Dígito
+
0
Dígito
1
…
9
Procesadores de Lenguaje
Ingeniería en Informática R.32
Críticas, dudas, sugerencias…
Federico Peinado
www.federicopeinado.es
Procesadores de Lenguaje
Ingeniería en Informática R.33
Formas normales
Procesadores de Lenguaje
Ingeniería en Informática R.34