Lenguajes y Gramáticas Teoría de Lenguajes Fernando Naranjo
Introduccion Se desarrollan lenguajes de programación basados en el principio de gramática formal. Se crean maquinas cada vez mas sofisticadas y menos complicadas para el usuario final.
Definiciones Básicas Símbolo: Normalmente los símbolos son letras (a,b,c, z), dígitos (0,1,2 9) y otros caracteres (+,*,/,-,?...). Un símbolo también puede estar formado por varias letras o caracteres, como las palabras reservadas de un lenguaje de programación son símbolos de dicho lenguaje. Ejemplo: - a,b,c,#,+,-,*, then, begin, end, else,
Definiciones Básicas VOCABULARIO O ALFABETO Un vocabulario o alfabeto es un conjunto finito de símbolos, no vacío. Se suele denotar con la letra Σ.
Definiciones Básicas Los alfabetos se definen por el tipo de los símbolos que contienen, podemos ver los siguientes ejemplos: V1={A,B,C,D,E,F,..,X,Y,Z} V2={a,b,c,d,0,1,2,3,4,*,#,+} V3={0,1} V4={if, then, begin, end, else, a,b,;,=,>}
Definiciones Básicas PALABRA. Dado un alfabeto Σ una palabra sobre dicho alfabeto es la yuxtaposición finita de símbolos del alfabeto. Representamos una palabra genérica con la letra griega ω.
Definiciones Básicas Ejemplos: Camisa, door, table, for, antena, werse, aaaa, son palabras sobre Σ1 001100, 0, 1111, 10 son palabras sobre Σ2 baba, lacada, caca, dalala, son palabras sobre Σ3 0, 18, 01214, 9999 son palabras sobre Σ4
Definiciones Básicas También se pueden definir las tablas ASCII y EBCDIC como los alfabetos de distintos ordenadores.
Cadena (o serie) Secuencia de símbolos : Se representa con una letra griega en minúscula. Ejemplos : α = 011010 β = iauoe Longitud cadena: cantidad de símbolos que forman la cadena. Ejemplos : α = 6 β = 5 011 = 3
Cadena (o serie) CONCATENACIÓN DE CADENAS Sean A y B dos cadenas cualesquiera, se denomina concatenación de A y B a una nueva cadena AB constituida por los símbolos de la cadena A seguidos por los de la cadena B.
Cadena (o serie) CONCATENACIÓN DE CADENAS Sean u y v dos palabras sobre el mismo alfabeto Σ, la concatenación de u y v es una nueva palabra ω que se obtiene yuxtaponiendo primero u y detrás v, escribimos ω = uv. Ejemplos: Sea u = 01, v = 100 la concatenación de ambas es ω = uv= 01100 Sea u = az, v= men, la concatenación es ω = uv = azmen
Cadena (o serie) PROPIEDADES DE LA CONCATENACIÓN DE CADENAS. i) No es conmutativa, en general no es lo mismo uv que vu. ii) Es asociativa, es decir cualesquiera que sean las palabras u, v y w sobre el mismo alfabeto, se tiene que (uv)w = u(vw). Esta propiedad nos permite concatenar cualquier número finito de palabras sin tener que poner los paréntesis. Escribiremos uvw. iii) uv = u + v es decir la longitud de la palabra formada por la concatenación de dos palabras, es la suma de las longitudes de cada una de ellas. iv) La palabra vacía es el elemento neutro de la concatenación. En efecto uλ=λu =u.
Palabra PREFIJOS Y SUFIJOS DE UNA PALABRA. Sea ω una palabra sobre cierto alfabeto Σ. Sean u y v dos palabras sobre Σ tales que ω=uv. Decimos que u es un prefijo y que v es un sufijo de ω. Observemos que ambas definiciones no hacen más que generalizar los conceptos de prefijo y sufijo del lenguaje habitual.
Palabra Ejemplos: Si ω = camisa, entonces los prefijos de ω son u0 = λ, u1 = c, u2 = ca, u3 = cam, u4 = cami, u5 = camis, u6 = camisa Y los sufijos v0 = λ, v1 = a, v2 = sa, v3 = isa, v4 = misa, v5 = amisa, v6 = camisa
Palabra INVERSIÓN DE UNA PALABRA. 1 Sea ω una palabra sobre w cierto a... n a2a1 alfabeto Σ. Llamamos inversa (o reflejada) de la palabra ω, y la representamos por w 1, a la palabra obtenida al escribir los símbolos que constituyen la palabra ω en orden inverso. Si w a1a 2a... 3 an su reflejada sería : Ejemplos: 1 w a... n a2a1 Si, como antes, tomamos ω = camisa, entonces ω 1 = asimac Puede ocurrir que una palabra coincida con su inversa como es el caso de ω = ana; tales palabras reciben el nombre de palíndromos.
Palabra PROPIEDADES DE LA INVERSIÓN Y LA CONCATENACIÓN DE PALABRAS. 1 1 1 i) ( UV ) V U es decir la palabra inversa (o reflejada) de la concatenación de dos palabras es la concatenación de las palabras inversas (o reflejadas) en orden contrario 1 ii) w w, es decir, la longitud de una palabra y su inversa coinciden siempre.
Cadena (o serie) Cadena vacía: Es una cadena cuya longitud es cero. Se representa con la letra griega epsilon ξ ξ = 0 o (Lambda) La cadena vacía actúa como elemento neutro. Es decir, toda cadena concatenada con la cadena vacía es igual a la misma cadena. 011 ξ = 011 ξ 11 = 11 10 ξ 1 = 101
Clausura (Σ*) Son las diferentes combinaciones que se pueden hacer con los símbolos de un alfabeto e inclusive la cadena vacía. Se representa Σ*, donde * se lee desde cero a más. Ejemplo: Para Σ = {0, 1} Su clausura es: Σ* = {0, 1}* = {0, 1} 0 υ {0, 1} 1 υ {0, 1} 2 υ υ {0, 1} n Es decir: {0, 1} 0 = ξ {0, 1} 1 = {0, 1} { 0, 1} 2 = {0, 1} {0, 1} = {00, 01, 10, 11} y así sucesivamente. Con lo cual:{0, 1}* = {ξ, 0, 1, 00, 01, 10, 11, }
Clausura positiva (Σ+) Es la misma clausura, pero sin incluir la cadena vacía. Se representa Σ +, donde + se lee desde uno a más. Σ + = Σ* - { ξ }
Gramática (G) Mecanismo que nos permite generar un lenguaje. Es un cuádruplo de la forma: Donde: G = (Σ, N, P, S) Σ : Conjunto de terminales (alfabeto) N : Conjunto de no terminales. P : Reglas de producción. Tienen la forma: (N υ Σ)* (N υ Σ)* S : Símbolo inicial, S Є N y es único.
Gramática (G) Vocabulario Terminal VT : Se define por enumeración de los símbolos terminales. Vocabulario no terminal VN : conjunto de símbolos introducidos como elementos auxiliares para la definición de la gramática, y que no figuran en las sentencias del lenguaje.
Gramática (G) La intersección entre el vocabulario terminal y no terminal es el conjunto vacío: {VN} Interceptado {VT} = {Ø} La unión entre el vocabulario terminal y no terminal es el vocabulario. {VN} Unido {VT} = {V}
Gramática (G) En ocasiones es importante distinguir si un determinado vocabulario incluye o no la cadena vacía, indicándose respectivamente con superíndice + o superíndice *, tal como se muestra a continuación: V+ = V - {ξ} V* = V + {ξ} Sea G la Gramática formada por G=(VT,VN,S,P) El símbolo inicial S es un símbolo no terminal a partir del cual se aplican las reglas de la gramática para obtener las distintas cadenas del lenguaje.
Gramática (G) Las producciones P son las reglas que se aplican desde el símbolo inicial para obtener las cadenas del lenguaje. El conjunto de producciones P se define por medio de la enumeración de las distintas producciones, en forma de reglas
Gramática (G) Ej 3: Sea la gramática: G=(VN, VT,S,P) donde: VN={<número>, <dígito>} VT={0,1,2,3,4,5,6,7,8,9} S= <número> Las reglas de producción P son: <número>::=<dígito><número> <número>::=<dígito> <dígito>::=0 1 2 3 4 5 6 7 8 9
Gramática (G) Ejemplo: G = ({0, 1}, {A, S}, P, S) Donde: Σ = {0, 1} N = {A, S} P son las reglas, que tienen la forma S 0A1 0A 00A1 A ξ S = Símbolo Inicial
Gramática (G) Ejemplo: G = ({+, -, *, e}, {E, T, F}, P, S) Donde: Σ = {+, -, *, e} N = {E, T, F} P son las reglas, que tienen la forma E E + T E E T E T T T * F T F F e S = Símbolo Inicial
Sentencia Cadena generada a partir de una gramática. AUTÓMATA Máquina que imita la figura y los movimientos de un ser animado. En el caso de los Procesadores de Lenguaje un autómata es una construccion lógica que recibe como entrada una cadena de símbolos y produce una salida indicando si dicha cadena pertenece o no a un determinado lenguaje.
Lenguaje (L) Dado un alfabeto Σ, un lenguaje sobre Σ es un conjunto de palabras sobre dicho alfabeto, es decir un subconjunto de Σ*. Conjunto de sentencias con estructura bien definida y por lo general con significado. L = {sentencias} Sintaxis: Define que líneas de caracteres son validas. Semántica: Define el significado de la construcción de un lenguaje. Asigna un significado o interpretación a los símbolos.
Lenguaje (L) Lenguaje en Informática: Conjunto de signos y reglas que permite la comunicación con un ordenador. Conjunto de palabras ó cadenas de símbolos (palabras, oraciones, textos o frases) de un determinado alfabeto.
Lenguaje (L) Ejemplos: L1 = {Camisa, door, table, for, antena, werse, aaaa} es un lenguaje sobre Σ1 L2 = {001100, 0, 1111, 10} es un lenguaje sobre Σ2 L3 = {baba, lacada, caca, dalala} es un lenguaje sobre Σ3 L4 = {0, 18, 01214, 9999} es un lenguaje sobre Σ4
Lenguaje (L) LENGUAJE VACÍO Es un conjunto vacío y que se denota por {Ø}. El lenguaje vacío no debe confundirse con un lenguaje que contenga una sola cadena, y que ésta sea la cadena vacía, es decir { }, ya que el número de elementos (cardinalidad) de estos dos conjuntos es diferente. Cardinal ({ Ø }) = 0 Cardinal ({ξ }) = 1 PALÍNDROMO : Cadenas que se leen igual hacia delante, que hacia atrás. Por ejemplo, ORURO
Lenguaje (L) LENGUAJE Se denomina lenguaje a un conjunto de palabras de un determinado alfabeto. También un lenguaje es un conjunto de cadenas de símbolos (palabras, oraciones, textos o frases). Un lenguaje está compuesto por Sintaxis: (gramática), que define las secuencias de símbolos que forman cadenas válidas de un lenguaje. Y por Semántica, que es el significado de las cadenas que componen un lenguaje.
Lenguaje (L) Ejemplo 1: Sintaxis: A Semántica: es un número natural. Diferente sintaxis en diferentes lenguajes: A: natural A: es un número que pertenece al conjunto de N={1,2,3..N} Ejemplo 2: Sintaxis: if a=b then write(a, " es igual a ", b ) else write(a, " es distinto a ", b )
Lenguaje (L) Semántica: Si se cumple la condición entonces se muestra un mensaje que ambos números son iguales. Caso contrario, se escribe los número son distintos.
Ejercicios Propuestos Expresar por extensión y por comprensión el lenguaje generado por las siguientes gramáticas: a) S X Y X a X a Y Y b b b) S X X a X b a b c) S a S P a P Q QP PQ ap ab bp bb bq be eq ee