



























Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Una introducción a los lenguajes formales en el contexto de Ingeniería Informática en la Universidad Complutense de Madrid. El profesor Federico Peinado elaboró el material para el curso 2009-2010. Se explica qué son los lenguajes formales, su clasificación y características de gramáticas regulares y expresiones regulares. El documento también incluye ejemplos de expresiones regulares y gramáticas formales.
Tipo: Resúmenes
1 / 35
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




























Ingeniería en Informática
Facultad de Informática – Universidad Complutense de Madrid
Curso 2009-
Profesor Federico Peinado Elaboración del material José Luis SierraFederico Peinado
Ej: El lenguaje “Número” es simplemente el conjunto infinitode cadenas finitas formadas con los dígitos 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9
El alfabeto es un
conjunto finito no vacío
de símbolos
La gramática es un
conjunto finito
de reglas para formar
cadenas finitas juntando símbolos del alfabeto
A cada cadena de símbolos de un lenguaje formal se lellama
fórmula bien formada
(o palabra) del lenguaje
Puede ser descrito
mediante una
expresión regular
(expresar de forma compacta cómo son todas las cadenasde símbolos que le pertenecen)
Puede ser generado
mediante una
gramática regular
(obtener todas las cadenas de símbolos que le pertenecen)
Puede ser reconocido
mediante un
autómata finito
(saber si una cadena de símbolos pertenece a él o no)
ER(A) y denota el lenguaje {}, siendo
el vacío
λ ∈
ER(A) y denota el lenguaje {
λ
}, siendo
λ
la cadena vacía
Si x
A, x
ER(A) y denota el lenguaje {x}
Si H
ER(A) y K
ER(A), con lenguajes denotados L
H
y L
K
ER(A) y denota el lenguaje L
H
K
(Conjunto de todas las cadenas de H o de K)
ER(A) y denota el lenguaje L
HK
siendo
L
HK
= {hk tal que h
H
y k
K
(Conjunto de todas las concatenaciones posibles de una cadena de H y otra de K)
ER(A) y denota el lenguaje L
H*
siendo
H*
λ
{a
α
tal que a
H
y
α ∈
H*
(Conjunto de todas las concatenaciones sucesivas posibles de cadenas de H)
Los paréntesis
asocian operadores a cadenas de
símbolos. Si no aparecen, repetir
es más prioritario que
concatenar y concatenar más prioritario que alternar |
a(a|b)*
a(b|c)*d
(a?[0-9]+)**
0
T el alfabeto de símbolos
terminales
(Símbolos que forman parte directamente de las cadenas del lenguaje)
N el alfabeto de símbolos
no terminales
(Símbolos más abstractos que representan posibles partes de las cadenas del lenguaje)
n
0
N, el no terminal inicial o
axioma
P el conjunto de reglas de producción o
producciones
de la
gramática
Puede representarse como
αααα
x
n
αααα
y
→→→→ β
βββ
ó
α α
α α
x
n
α α
α α
y
ββββ
donde n
N y
α
x
α
y
β ∈
o
E el conjunto
finito
y
no vacío
de
estados posibles
e
o
E, el
estado inicial
del autómata
A el
alfabeto
de entrada que acepta el autómata
t, la
función de transición de estados
E, el conjunto de
estados finales
Autómatas finitos deterministas
(AFDs)
t
(Con cada símbolo de entrada se pasa de un estado del autómata a otro)
Autómatas finitos no deterministas
(AFNDs)
t
λ
(Con algún símbolo de entrada, o con la cadena vacía, se pasa de uno de los
estados del autómata a otro conjunto no vacío de estados -
℘
significa partición -)
Parte del estado inicial
Recibe
uno a uno
los símbolos de la cadena de entrada
En un AFND este paso a veces se ignora, pudiendoocurrir una
transición espontánea
λ
-transición)
Aplica la función de transición para cambiar su estado
Un AFND puede estar
en varios estados a la vez
Si quedan símbolos por procesar, vuelve al paso 2
Si no quedan símbolos por procesar…
Si se ha alcanzado algún estado final la cadena esreconocida como
perteneciente
al lenguaje [Fin]
Si
no
se ha alcanzado ningún estado final la cadena es
rechazada por ser
no perteneciente
al lenguaje [Fin]
Si varias transiciones van de un mismo estado inicial a unmismo estado final, con distintos símbolos, se pueden
juntar
o
1
2
o
1
2
o
2
1
o
1
3
2
o
1
Puede ser generado
mediante una
gramática incontextual
(obtener todas las cadenas de símbolos que le pertenecen)
Puede ser reconocido
mediante un
autómata con pila
(saber si una cadena de símbolos pertenece a él o no)
G
G
El
lenguaje generado
por una gramática G es L(G)
L(G) = {
α
tal que
α∈
T* y n
0
⇒
G
α
}
(Todas las posibles sentencias derivables del axioma de la gramática n
0
)
Si
α α
α α
⇒ ⇒
⇒ ⇒
G
β β
β β
puede haber sólo una secuencia de
derivación inmediata (
derivación de
β β
β β
desde
α α
α α
) o
varias posibles
Cada una se representa así:
α
G
α
o
α
o
G
α
1
α
n
G
β
O en forma compacta:
α
G
α
o
G
α
1
G
G
β
Derivación
por la izquierda
aquella en la que cada
derivación inmediata
α
x
G
α
y
usa la producción n
→ β
0
para el n situado lo más a la izquierda posible en
α
x
Derivación
por la derecha
aquella en la que cada
derivación inmediata
α
x
G
α
y
usa la producción n
→ β
0
para el n situado lo más a la derecha posible en
α
x