Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los lenguajes Naturales (utilizados por el hombre) existen por sí mismos y las reglas
gramaticales que rigen su estructura han sido desarrollados con posterioridad. Se puede decir
que evolucionan con el paso del tiempo.
Los lenguajes Formales (como pueden ser los lenguajes de programación) obedecen reglas
preestablecidas y por tanto, se ajustan a ellas, no evolucionan y han sido creados para un fin
específico.
La teoría de los autómatas proviene del campo de la ingeniería eléctrica. Shannon publico
varios trabajos donde demostraba la aplicación de la lógica matemática a los circuitos
combinacionales y secuenciales. Posteriormente, sus ideas se desarrollaron para dar lugar a la
Teoría de Autómatas. Moore público el primer estudio riguroso sobre autómatas y a finales
de los años 50 se comenzó a ver la utilidad de los autómatas en relación con los lenguajes.
La teoría de lenguajes y gramáticas formales tiene una relación directa con la teoría de las
maquinas abstractas, siendo posible establecer entre ambas un isomorfismo. Dado que las
gramáticas proporcionan las reglas utilizadas en la generación de las cadenas de un lenguaje,
se puede establecer una conexión entre la clase de lenguajes generados por ciertos tipos de
gramáticas y la clase de lenguajes reconocibles por ciertas maquinas. Así, se pueden
identificar los lenguajes tipo 0 con la clase de lenguajes reconocidos por una Maquina de
Turing; los lenguajes del tipo 1 con los Autómatas Linealmente Acotados; los lenguajes tipo
2 con los autómatas de pila y los de tipo 3 con los autómatas finitos.
Si un lenguaje de interés contiene un número finito de hileras, puede ser definido por
extensión o por comprensión. Por extensión, se refiere con hacer el listado de todas las hileras
que el lenguaje tiene. Cuando se presenta una hilera particular esta se compara con el listado
y si está incluida se acepta como válida, caso contrario se la rechaza.
La inmensa mayoría de los lenguajes que tienen interés son infinitos, lo que nos impide
caracterizarlos por extensión. Entonces lo que se hace es definir el lenguaje por comprensión.
Para ello se utilizan las Gramáticas de Estructura de Frase (GEF): Las cuales son
descripciones estructurales de las sentencias de los lenguajes.
Lo que se hace es generar hileras con la GEF y de acuerdo a estas se establece el lenguaje.
Después, ante una sentencia particular se analiza si este puede ser generado o no por esa
gramática. En caso afirmativo se la acepta como válida, caso contrario se la rechaza.
(VN) Vocabulario No Terminal: Símbolos que se introducen como elementos auxiliares para
definir la gramática, no figuran en las palabras, se definen generalmente con letras
mayúsculas y nos dicen la continuación de la derivación.
VT Vocabulario Terminal: Símbolos que forman las palabras del lenguaje, se usan letras
minúsculas y se cumple que ambos vocabularios son finitos. Denotamos con V la unión:
V = VT U VN ^ VT ∩ VN = Ø VT = {a,b,c,....,z,1,2,3}
Además, el VN no tiene elemento en común con el VT, ósea que su intersección es vacía.
(Conjuntos Disjuntos)
La derivación
Proceso de aplicar las reglas de producción partiendo de S y a través de ellas llegar a cadenas
formadas exclusivamente por elementos terminales.
P: S-> aA
Con la gramática tengo que poder generar todas las cadenas del lenguaje, de otro modo está
mal definida. Cómo saber si una cadena es o no del lenguaje, lo que se hace es tratar de
producirla: Dada x = abb
S -> aA -> abB -> abb Se obtiene x, entonces x es una cadena del lenguaje
Como consecuencia, la gramática dada reconoce cualquiera de las cadenas del siguiente
lenguaje: L(G) = {ai bj / i ≥ 1, j ≥ 2}
Definición: L(G) = {x /x ϵ VT * / S ➡ x}
Es el conjunto de todas las cadenas generadas por G, se lo indica L(G). Donde L(G) =
lenguaje generador de una gramática de estructura de frase.
Se dice que dos gramáticas G1 y G2 son equivalentes, si generan igual lenguaje, de modo que
L(G1) = L(G2) .
Lenguaje Vacío: Lenguaje que no contiene ninguna hilera. Se genera mediante cualquier
gramática que no genere ninguna hilera. Ej: Dada
G = ({ S }, { a } , P, S)
S -> aS
En este tipo de gramática se tiene en cuenta lo que viene antes y después del símbolo que se
sustituye y además nunca genera la hilera nula, la producción de esta gramática es de la
forma:
Restricciones
Generan lenguajes libres de contexto, estas gramáticas están atadas a la restricción que en la
parte izquierda de sus producciones sólo puede haber un solo símbolo No Terminal, la
producción de esta gramática es de la forma: A➡α. Donde
α ϵ V*
Llamamos gramáticas regulares a cualquier gramática que sea lineal por la izquierda o por la
derecha. Las producciones de esta gramática tienen la forma: