Upload
heber1978
View
315
Download
2
Embed Size (px)
Citation preview
Lenguajes y GramáticasLenguajes y Gramáticas
Teoría de Lenguajes
Ing. Heber Gómez Hurtado
Alfabeto (Σ)
Conjunto de símbolos para formar o construir un lenguaje. Σ = {x1, x2 , ... ,xn}
donde xi es un símbolo. Ejemplos 1.1:
Σ = { 0, 1 } Alfabeto binario. Σ = { a, e, i, o, u } Alfabeto vocales.
Cadena (o serie)
Secuencia de símbolos; se representa con una letra griega en minúscula.
Ejemplos 2.1: α = 011010 β = iauoe
Longitud cadena:cantidad de símbolos que forman la cadena.
Ejemplos 2.2: | α | = 6 | β | = 5 | 011 | = 3
Cadena (o serie)
Cadena vacía: Es una cadena cuya longitud es cero. Se
representa con la letra griega epsilon ξ| ξ | = 0
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.
Ejemplos 2.3: 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 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:
G = (Σ, N, P, S) Donde:
Σ : 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)
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
Derivación
Es un proceso que consiste en sustituir el lado izquierdo (antecedente) por su lado derecho (consecuente) de las producciones o reglas con la finalidad de obtener sentencias de un lenguaje.
Ejemplo: Considerando la gramática siguiente S 0A1 (1)→ 0A 00A1 (2)→ A ξ (3)→
Derivando: (1) (3) S 0A1 0 ξ 1 = 01 (1) (2) (3) S 0A1 00A11 00 ξ 11 = 0011 (1) (2) (2) (3) S 0A1 00A11 000A111 000 ξ 111 = 000111
Derivación
Así sucesivamente, se puede seguir derivando, obteniéndose el siguiente lenguaje: Por extensión : L (G) = {01, 0011, 000111, …} Por comprensión : L (G) = {0 N 1 N / N >= 1}
La derivación puede ser: Derivación por la izquierda: Se van sustituyendo los
no terminales que están más a la izquierda, uno por uno.
Derivación por la derecha: Se van sustituyendo los no terminales que están más a la derecha, uno por uno.
Derivación Ejemplo: Considerando la siguiente
gramática de expresiones aritméticas E E + T (1)→
| E – T (2)| T (3)
T T * F (4)→| T / F (5)| F (6)
F e → (7)| i (8)
Probar si: e + i * e es una sentencia del lenguaje generado por la gramática.
Derivación Derivando por la izquierda: (1) (3) (6) (7) (4) (6) (8) (7)
E E+T T+T F+T e+T e+T*F e+F*F e+i*F e+i*e
Derivando por la derecha : (1) (4) (7) (6) (7) (3) (6) (7)
E E+T E+T*F E+T*e E+F*e E+i*e T+i*e F+i*e e+i*e
Sentencia
Cadena generada a partir de una gramática.
Lenguaje (L)
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.
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