Escolar Documentos
Profissional Documentos
Cultura Documentos
Profesor Federico Peinado Elaboracin del material Jos Luis Sierra Federico Peinado
Lenguajes formales Un lenguaje formal es un conjunto (finito o infinito) de cadenas finitas de smbolos primitivos
Ej: El lenguaje Nmero es simplemente el conjunto infinito de cadenas finitas formadas con los dgitos 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9
Dichas cadenas estn formadas gracias a un alfabeto y a una gramtica que estn formalmente especificados
El alfabeto es un conjunto finito no vaco de smbolos La gramtica es un conjunto finito de reglas para formar cadenas finitas juntando smbolos del alfabeto A cada cadena de smbolos de un lenguaje formal se le llama frmula bien formada (o palabra) del lenguaje
R.1
Clasificacin de gramticas formales Chomsky clasific jerrquicamente las gramticas formales que generan lenguajes formales, en estos tipos:
Tipo 3: Gramticas regulares que generan lenguajes regulares Tipo 2: Gramticas incontextuales que generan lenguajes incontextuales Tipo 1: Gramticas contextuales que generan lenguajes contextuales Tipo 0: Gramticas libres que generan lenguajes sin ningn tipo de restriccin
Cuanto menor es el tipo, mayor es el poder expresivo del lenguaje generado y ms complejidad tiene su tratamiento por parte de una mquina
R.2
Lenguajes regulares Un lenguaje regular es un lenguaje formal que tiene estas caractersticas:
Puede ser descrito mediante una expresin regular (expresar de forma compacta cmo son todas las cadenas de smbolos que le pertenecen) Puede ser generado mediante una gramtica regular (obtener todas las cadenas de smbolos que le pertenecen) Puede ser reconocido mediante un autmata finito (saber si una cadena de smbolos pertenece a l o no)
Todas estas caractersticas facilitan mucho su tratamiento computacional, por eso nos interesan los lenguajes regulares!
R.3
Expresiones regulares (ERs) El conjunto de expresiones regulares sobre un alfabeto A se denomina ER(A) y slo contiene expresiones formadas mediante estas reglas:
ER(A) y denota el lenguaje {}, siendo el vaco ER(A) y denota el lenguaje {}, siendo la cadena vaca Si x A, x ER(A) y denota el lenguaje {x} Si H ER(A) y K ER(A), con lenguajes denotados LH y LK (H | K) ER(A) y denota el lenguaje LH LK
(Conjunto de todas las cadenas de H o de K)
(HK) ER(A) y denota el lenguaje LHK siendo LHK = {hk tal que h LH y k LK}
(Conjunto de todas las concatenaciones posibles de una cadena de H y otra de K)
Los parntesis () asocian operadores a cadenas de smbolos. Si no aparecen, repetir * es ms prioritario que concatenar y concatenar ms prioritario que alternar |
Procesadores de Lenguaje Ingeniera en Informtica R.4
Extensiones a la notacin de las expresiones regulares Estas extensiones no amplan la expresividad, pero hacen mucho ms cmodo expresar lenguajes con ERs
H? H | (Se llama opcionalidad ? y tiene la misma prioridad que repeticin *) H+ H(H)* (Se llama cierre positivo + y tiene la misma prioridad que repeticin *) [xn - xm] xn | xn+1 | xn+2 | | xm (Se llama rango [ - ] y slo se usa para alfabetos totalmente ordenados) Ej: Intervalos de nmeros naturales como [3-9] o de caracteres ASCII como [f-m] \x carcter x (Se llama escape de metacaracteres \ y se usa para incluir en el lenguaje definido caracteres que actan como operadores, es decir son metacaracteres, en las expresiones regulares) Ej: \* para denotar el carcter * Ej: \\ para denotar el carcter \
Procesadores de Lenguaje Ingeniera en Informtica R.5
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]+)*\*
R.6
Gramticas formales Las gramticas formales se definen con una tupla <T, N, n0, P> siendo:
T el alfabeto de smbolos terminales
(Smbolos que forman parte directamente de las cadenas del lenguaje)
n0 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)*
R.7
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 nt 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 nt n n t donde t T y n, n N
R.8
Autmatas finitos (AFs) Los autmatas finitos se definen con una tupla <E, eo, A, t, F> siendo:
E el conjunto finito y no vaco de estados posibles eo 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
R.9
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
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
R.11
Si varias transiciones van de un mismo estado inicial a un mismo estado final, con distintos smbolos, se pueden juntar
a eo e1 a,b e2
a,b
R.12
0 eo
e1 [1-9] e2
Nmeros naturales
[0-9]
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
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
R.15
Gramticas incontextuales Las gramticas incontextuales tienen producciones n donde n N y (T N)* Ejemplo: El lenguaje de los nmeros binarios
Gbin
Terminales: 0, 1 No terminales: bits, bit Axioma: bits Producciones: bits bits bit bits bit bit 0 bit 1
R.16
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:
on1 o01 n 0 P siendo o, 1 y 0 (T N)* y n N
R.17
Ejemplo de derivacin
Gbin
bits bits bit bits bit bit bit bit bit 1 bit bit 1 0 bit 1 0 1
R.18
Si G* puede haber slo una secuencia de derivacin inmediata (derivacin de desde ) o varias posibles
Cada una se representa as: G o, oG1, , n G O en forma compacta: G o G 1 G . G Derivacin por la izquierda: aquella en la que cada derivacin inmediata x 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
R.19
rboles de derivacin
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.20
Gbin
bits bits bits bit 1 bit 0 bit 1
R.21
Gfbf
Terminales: p, No terminales: Axioma: fbf Producciones: fbf p fbf fbf fbf fbf fbf fbf , , fbf
fbf fbf
R.22
p p p
fbf fbf fbf fbf
fbf
fbf
fbf
fbf
fbf
fbf
Basta con encontrar dos estructuras distintas para una misma sentencia de un lenguaje para demostrar que su gramtica es ambigua
R.23
Autmatas a pila (APs) Los autmatas a pila se definen con una tupla <A, P, E, po, eo, 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 po P, el smbolo inicial de la pila eo 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)
R.24
APbin(equivalente a Gbin)
A = {0, 1} P = {0, 1, bits, bit, $} E = {x0, x1, x2} p0 = $ e0 = x0 Definicin 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}
R.25
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
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.26
Notacin BNF
TERMINAL Smbolo (ej. una palabra) del lenguaje a definir
R.28
Notacin EBNF Aade metasmbolos nuevos y cambia la forma de presentar las cosas
BNF TERMINAL <no terminal> Metasmbolo ::= Equivalencia | Alternativa EBNF terminal No-terminal Metasmbolo ::= | (...) [...] {...} Equivalencia Alternativa Agrupacin Aparicin opcional Aparicin 0, 1 o ms veces
Recursividad permitida
R.30
Diagramas sintcticos
TERMINAL
No Terminal
*En las reglas de produccin el no terminal de la izquierda se deja sin recuadro
Alternativa
Aparicin 0, 1 o ms veces
Aparicin opcional
R.31
Ejemplo con diagramas sintcticos Sintaxis de los nmeros enteros positivos en notacin de diagramas sintcticos
N entero positivo Dgito + 0 Dgito 1 9 Dgito
R.32
R.33
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 non1 nt siendo t T y n, no, n1 N
R.34