Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Repaso LenguajesFormales
Repaso LenguajesFormales
Procesadores de Lenguaje
Ingeniera en Informtica R.6
Ejemplos de expresiones regulares
Descripcin del lenguaje de las cadenas que empiezan
por una a y continan con as y bs
a(a|b)*
Descripcin del lenguaje de las cadenas que empiezan
por a, continan con bs y cs y terminan en d
a(b|c)*d
Descripcin del lenguaje de las cadenas formadas por
trozos de cadena que pueden empezar (o no) por una a
y continan con un nmero que tenga al menos un dgito;
adems terminan siempre en asterisco *
(a?[0-9]+)*\*
Procesadores de Lenguaje
Ingeniera en Informtica R.7
Gramticas formales
Las gramticas formales se definen con una tupla
<T, N, n
0
, P> siendo:
T el alfabeto de smbolos terminales
(Smbolos que forman parte directamente de las cadenas del lenguaje)
N el alfabeto de smbolos no terminales
(Smbolos ms 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 produccin o producciones de la
gramtica
Puede representarse como
x
n
y
x
n
y
::=
donde n N y
x
,
y
, (T N)*
Procesadores de Lenguaje
Ingeniera en Informtica R.8
Gramticas regulares
Las gramticas regulares son de uno de estos dos tipos:
Son gramticas regulares a derechas, es decir, todas sus
producciones siguen una de estas tres formas:
n
n t
n t n
donde t T y n, n N
Son gramticas regulares a izquierdas, es decir, todas sus
producciones siguen una de estas tres formas:
n
n t
n n t
donde t T y n, n N
Procesadores de Lenguaje
Ingeniera en Informtica
Autmatas finitos (AFs)
Los autmatas finitos se definen con una tupla
<E, e
o
, A, t, F> siendo:
E el conjunto finito y no vaco de estados posibles
e
o
E, el estado inicial del autmata
A el alfabeto de entrada que acepta el autmata
t, la funcin de transicin de estados
F E, el conjunto de estados finales
Hay dos tipos de autmatas finitos
Autmatas finitos deterministas (AFDs)
t E A E
(Con cada smbolo de entrada se pasa de un estado del autmata a otro)
Autmatas finitos no deterministas (AFNDs)
t E (A {}) (E)
(Con algn smbolo de entrada, o con la cadena vaca, se pasa de uno de los
estados del autmata a otro conjunto no vaco de estados - significa particin -)
R.9
Procesadores de Lenguaje
Ingeniera en Informtica
Comportamiento de un autmata finito
Sirve para reconocer cadenas de smbolos de un
lenguaje regular, para lo que:
1. Parte del estado inicial
2. Recibe uno a uno los smbolos de la cadena de entrada
En un AFND este paso a veces se ignora, pudiendo
ocurrir una transicin espontnea (-transicin)
3. Aplica la funcin de transicin para cambiar su estado
Un AFND puede estar en varios estados a la vez
4. Si quedan smbolos por procesar, vuelve al paso 2
5. Si no quedan smbolos por procesar
Si se ha alcanzado algn estado final la cadena es
reconocida como perteneciente al lenguaje [Fin]
Si no se ha alcanzado ningn estado final la cadena es
rechazada por ser no perteneciente al lenguaje [Fin]
R.10
Procesadores de Lenguaje
Ingeniera en Informtica
Notaciones para autmatas finitos
Tabla de transicin de estados
La permanencia en un estado se representa como una
transicin de un estado otra vez al mismo estado
Se pueden dejar transiciones sin definir (funcin de
transicin de estados parcial), dejando huecos o con guin -
Significa saltar a un estado final de error y rechazar la
cadena por ser no perteneciente al lenguaje
Estados/Smbolos x y
e
o
e
i
-
e
1
e
j
e
k
R.11
Procesadores de Lenguaje
Ingeniera en Informtica
Notaciones para autmatas finitos
Diagrama de transicin de estados
Si varias transiciones van de un mismo estado inicial a un
mismo estado final, con distintos smbolos, se pueden juntar
e
o
e
1
a
a
e
2
b
a
b
e
o
e
1
a
a,b
e
2
a,b
R.12
Procesadores de Lenguaje
Ingeniera en Informtica
Ejemplos de autmatas finitos
e
o
[1-9]
e
2
[0-9]
e
1
0
e
o
+,-
e
1
[1-9]
e
3
0
e
2
[0-9]
e
o
[a-z],[A-Z]
e
1
[a-z],[A-Z],[0-9]
Nmeros naturales
Nmeros naturales con signo
Identificadores (bsicos)
R.13
Procesadores de Lenguaje
Ingeniera en Informtica
Expresiones regulares, gramticas regulares y autmatas finitos
Las expresiones regulares (ERs), las gramticas
regulares, los autmatas finitos deterministas (AFDs) y los
no deterministas (AFNDs) son equivalentes en cuanto a
expresividad
Las ERs describen, las gramticas regulares generan y los
AFs permiten reconocer cualquier lenguaje regular
Existen demostraciones formales para convertir de ER a
AFND, de AFND a AFD y de AFD a ER, as como para
comparar las ERs con las gramticas regulares
R.14
Procesadores de Lenguaje
Ingeniera en Informtica R.15
Lenguajes incontextuales
Un lenguaje incontextual es un lenguaje formal que tiene
estas caractersticas:
Puede ser generado mediante una gramtica incontextual
(obtener todas las cadenas de smbolos que le pertenecen)
Puede ser reconocido mediante un autmata con pila
(saber si una cadena de smbolos pertenece a l o no)
Aunque son ms complejos que los regulares, estas
caractersticas facilitan su tratamiento computacional, por
eso tambin nos interesan los lenguajes incontextuales
Procesadores de Lenguaje
Ingeniera en Informtica R.16
Gramticas incontextuales
Las gramticas incontextuales tienen producciones
n donde n N y (T N)*
Ejemplo: El lenguaje de los nmeros binarios
G
bin
Terminales: 0, 1
No terminales: bits, bit
Axioma: bits
Producciones:
bits bits bit
bits bit
bit 0
bit 1
Procesadores de Lenguaje
Ingeniera en Informtica R.17
Ms sobre gramticas formales (incontextuales)
Las cadenas (T N)* se llaman formas sentenciales
Las cadenas T* se llaman sentencias o frases
Una gramtica incontextual G genera en (T N)*
relaciones de derivacin inmediata
G
G
( es derivable inmediatamente de ) si y slo si se
dan estas tres condiciones:
o
n
1
o
1
n
0
P
siendo
o
,
1
y
0
(T N)* y n N
Las relaciones de derivacin
G
* son el resultado de
hacer el cierre reflexivo-transitivo de
G
G
* ( es derivable de ) si y slo si existe una
secuencia de derivaciones inmediatas que nos permita llegar
a partiendo de
Procesadores de Lenguaje
Ingeniera en Informtica R.18
Ejemplo de derivacin
G
bin
bits bits bit bits bit bit
bit bit bit 1 bit bit 1 0 bit 1 0 1
Procesadores de Lenguaje
Ingeniera en Informtica R.19
Ms sobre gramticas formales (incontextuales)
El lenguaje generado por una gramtica G es L(G)
L(G) = { tal que T* y n
0
*
G
}
(Todas las posibles sentencias derivables del axioma de la gramtica n
0
)
Si
G
* puede haber slo una secuencia de
derivacin inmediata (derivacin de desde ) o
varias posibles
Cada una se representa as:
G
o
,
o
1
, ,
n
G
O en forma compacta:
G
o
G
1
G
.
G
G
y
usa la produccin n
0
P
para el n situado lo ms a la izquierda posible en
x
Derivacin por la derecha: aquella en la que cada
derivacin inmediata
x
G
y
usa la produccin n
0
P
para el n situado lo ms a la derecha posible en
x
Procesadores de Lenguaje
Ingeniera en Informtica R.20
rboles de derivacin
Un rbol de derivacin de una gramtica G cumple:
Los nodos estn etiquetados con elementos T N {}
Los hijos de los nodos estn ordenados
Se forma de la siguiente manera:
Un nico nodo etiquetado con n
0
es rbol de derivacin
Si X es rbol de derivacin, h uno de sus nodos hoja
etiquetado con n N y n una de sus producciones,
se puede construir otro rbol de derivacin X as:
Si es ,se aade a h un hijo etiquetado con
Si no, se aaden a h tantos hijos como smbolos tenga ,
etiquetados en orden con dichos smbolos
Si todas sus hojas estn etiquetadas con o terminales, el
rbol de derivacin se llama estructura de la sentencia
formada al concatenar las etiquetas de dichas hojas
Todas las sentencias tienen al menos una estructura
Una sentencia puede tener varias estructuras distintas
Si ocurre en algn caso, la gramtica G es ambigua!
Procesadores de Lenguaje
Ingeniera en Informtica R.21
Ejemplo de rbol de derivacin (estructura)
G
bin
bits
bits
bit
bit
bits
bit
1
0
1
Procesadores de Lenguaje
Ingeniera en Informtica
Ejemplo: El lenguaje de las frmulas bien formadas (fbf) de la
lgica de primer orden
p representa cualquier predicado booleano
R.22
Ejemplo de gramtica incontextual ambigua
G
fbf
Terminales: p, , ,
No terminales: fbf
Axioma: fbf
Producciones:
fbf p
fbf fbf
fbf fbf fbf
fbf fbf fbf
Procesadores de Lenguaje
Ingeniera en Informtica R.23
Ejemplo de gramtica incontextual ambigua
fbf
fbf fbf
fbf
fbf p
p
p
fbf
fbf fbf
p fbf
p
fbf
p
Basta con encontrar dos estructuras distintas para una misma sentencia
de un lenguaje para demostrar que su gramtica es ambigua
p p p
Procesadores de Lenguaje
Ingeniera en Informtica
Autmatas a pila (APs)
Los autmatas a pila se definen con una tupla
<A, P, E, p
o
, e
o
, t, F> siendo:
A el alfabeto de entrada que acepta el autmata
P el alfabeto de la pila
E el conjunto finito y no vaco de estados posibles
p
o
P, el smbolo inicial de la pila
e
o
E, el estado inicial del autmata
t, la funcin de transicin de estados
t E (A {}) P (E P*)
(Con algn smbolo de entrada, o con la cadena vaca, y teniendo en cuenta la cima
de la pila, se pasa de uno de los estados del autmata a otro conjunto no vaco de
estados, sustituyendo el smbolo de la cima de la pila por otros smbolos del alfabeto
de la pila el smbolo ms a la derecha de ellos es la cima de la pila)
F E, el conjunto de estados finales
Comportamiento similar al de un autmata finito:
El comportamiento es no determinista, salvo que t siempre
lleve a un nico estado
R.24
Procesadores de Lenguaje
Ingeniera en Informtica
Ejemplo de autmata a pila
AP
bin
(equivalente a G
bin
)
A = {0, 1}
P = {0, 1, bits, bit, $}
E = {x
0
, x
1
, x
2
}
p
0
= $
e
0
= x
0
Definicin parcial de t:
t(<x
o
,,$>)= {<x
1
,$ bits>}
t(<x
1
,,bits>)= {<x
1
,bit>, <x
1
,bit bits>}
t(<x
1
,,bit>)= {<x
1
,0>, <x
1
,1>}
t(<x
1
,0,0>)= {<x
1
,>}
t(<x
1
,1,1>)= {<x
1
,>}
t(<x
1
,,$>)= {<x
2
,$>}
F = {x
2
}
R.25
Procesadores de Lenguaje
Ingeniera en Informtica R.26
Documentacin tcnica de un lenguaje de programacin
Conjunto de reglas que especifican y permiten verificar la
correccin de las sentencias del lenguaje y que estn
orientadas a los programadores que quieren conocer con
exactitud su sintaxis (principalmente)
La notacin gramatical es til desde el punto de vista del
desarrollador de procesadores de lenguaje, pero no desde el
punto de vista de sus usuarios
Formalismos ms utilizados por ser compactos o visuales:
Notacin BNF (Backus-Naur Form)
Notacin EBNF (Extended Backus-Naur Form)
Diagramas sintcticos
Todos ellos pueden expresar cualquier lenguaje
incontextual (la base de la sintaxis de cualquier lenguaje
de programacin) as que podemos usar el que queramos
Procesadores de Lenguaje
Ingeniera en Informtica R.27
Notacin BNF
TERMINAL Smbolo (ej. una palabra) del lenguaje a definir
(se escribe en letras maysculas)
<no terminal> Smbolo que se define en trminos de otros
smbolos (tanto terminales como no terminales)
(se escribe en letras minsculas y entre <>)
Regla de produccin Descripcin de un smbolo no terminal como
equivalente a 1) una combinacin de terminales
y no terminales, o 2) a la cadena vaca
(Un mismo no terminal puede tener varias reglas de produccin)
Metasmbolo Smbolo propio de la notacin BNF, est reservado
y no puede utilizarse en ningn otro smbolo
::= Equivalencia
(lo de la izquierda equivale a lo de la
derecha; es una regla de produccin)
| Alternativa
(lo de la izquierda o lo de la derecha)
Procesadores de Lenguaje
Ingeniera en Informtica R.28
Sintaxis de los nmeros enteros positivos en notacin BNF
<numero entero> ::= <signo opcional> <secuencia dgitos>
<signo opcional> ::= + | <nada>
<secuencia dgitos> ::= <dgito> | <dgito> <secuencia dgitos>
<dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<nada> ::=
Ejemplo en notacin BNF
Procesadores de Lenguaje
Ingeniera en Informtica R.29
Notacin EBNF
Aade metasmbolos nuevos y cambia la forma de presentar
las cosas
BNF
TERMINAL
<no terminal>
Metasmbolo
::= Equivalencia
| Alternativa
Recursividad permitida
EBNF
terminal
No-terminal
Metasmbolo
::= Equivalencia
| Alternativa
(...) Agrupacin
[...] Aparicin opcional
{...} Aparicin 0, 1 o ms veces
(son ERs a la derecha de cada produccin)
Recursividad NO permitida (se suple con {})
Si algn smbolo del lenguaje coincide con un
metasmbolo, el smbolo del lenguaje se pone
entre comillas simples
Procesadores de Lenguaje
Ingeniera en Informtica
Sintaxis de los nmeros enteros positivos en notacin EBNF
Numero-entero ::= [Signo] Secuencia-dgitos
Signo ::= +
Secuencia-dgitos ::= Dgito {Dgito}
Dgito ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
R.30
Ejemplo en notacin EBNF
Procesadores de Lenguaje
Ingeniera en Informtica R.31
Diagramas sintcticos
TERMINAL
No Terminal
Alternativa
Aparicin 0, 1 o ms veces Aparicin opcional
*En las reglas de produccin el no terminal
de la izquierda se deja sin recuadro
Procesadores de Lenguaje
Ingeniera en Informtica R.32
Ejemplo con diagramas sintcticos
Sintaxis de los nmeros enteros positivos en notacin de
diagramas sintcticos
+
Dgito
Dgito
1
0
9
N entero positivo
Dgito
Procesadores de Lenguaje
Ingeniera en Informtica R.33
Crticas, dudas, sugerencias
Federico Peinado
www.federicopeinado.es
Procesadores de Lenguaje
Ingeniera en Informtica R.34
Formas normales
Maneras ms organizadas de expresar una
gramtica incontextual (recomendables para no
cometer errores en la definicin del lenguaje!)
Forma normal de Chomsky
Gramtica incontextual G con todas sus producciones
expresadas segn una de estas dos frmulas:
n n
o
n
1
n t
siendo t T y n, n
o
, n
1
N
Forma normal de Greibach
Gramtica incontextual G con todas sus producciones
expresadas segn esta frmula:
n t
siendo t T y N*