Sintaxis y Semántica del Lenguaje UTN FRSF – Apunte Nro. 1
LENGUAJES, GRAMÁTICAS Y AUTÓMATAS
UNIDAD 1 INTRODUCCIÓN En esta introducción, veremos el significado de Lenguajes, Gramáticas y Autómatas y la relación existente entre ellos. Las conexiones entre estos conceptos la vemos en la sig. figura: equivale Máquina
Gramática
reconoce genera
describe genera Lenguaje
- LENGUAJES, ALFABETO CADENAS DE CARACTERES, UNIVERSO DEL DISCURSO Antes de definir el concepto de lenguajes formales, resulta necesario definir otros conceptos más elementales, y para ello nos valdremos de la teoría elemental de conjuntos. Símbolo. El concepto más primitivo es el símbolo. Un símbolo es una entidad indivisible. Comúnmente los símbolos son letras (a, b, …,z, A, B, …,Z), dígitos (0, 1, …,9) y otros caracteres (#, +, *, …). Los símbolos pueden estar formados por varias letras, por ejemplo, las palabras reservadas de los lenguajes de programación son símbolos de dichos lenguajes (if, then, else, begin, case, …). Alfabeto Un alfabeto es un conjunto no vacío de símbolos. Para indicar que un símbolo a pertenece a un alfabeto V, se utiliza la siguiente notación a ∈ V. Los alfabetos se definen por enumeración de los símbolos que contienen. Por ejemplo, así tenemos el alfabeto del idioma español ∑ = {a, b, c, …., z, A, B, …, Z}, A1 = {0, 1, ., +, ¯}, también ASCII y EBCDIC son alfabetos de distintos ordenadores. Cadenas de Caracteres. Utilizando los símbolos de un alfabeto podemos formar secuencias o cadenas de caracteres, también llamadas palabras. Es decir, una palabra es una secuencia finita de símbolos de un determinado alfabeto. Un caso especial de cadena es la cadena vacía ε la cual no posee ningún símbolo. Año: 2009
pág. 1
Sintaxis y Semántica del Lenguaje UTN FRSF – Apunte Nro. 1
LENGUAJES, GRAMÁTICAS Y AUTÓMATAS
Longitud de una cadena. Es el número de símbolos que tiene dicha cadena. La notación la vemos en los siguientes ejemplos: |abc| = 3, |10001001| = 8. La longitud de la cadena vacía es |ε| = 0 Concatenación. Si escribimos símbolos o palabras unas a continuación de otras, forman una única palabra, es decir, se concatenan. La notación que nos permitirá denotar la concatenación de dos palabras α y β es αβ. Por ejemplo si α = sola y β = mente, tenemos que αβ = solamente. Universo. El conjunto de todas las palabras que se puedan definir sobre un alfabeto ∑ lo denotaremos como ∑*. - LENGUAJE FORMAL. DEFINICIÓN Representar o definir un lenguaje plantea un problema: se necesita un procedimiento que reconozca a los elementos del lenguaje o que los genere. Reconocer un lenguaje supone un proceso de “prueba” de cada elemento posible para verificar si pertenece o no a aquél. Este tipo de proceso es el que realizan los autómatas. La generación de un lenguaje en cambio, es un procedimiento que arroja como resultado los elementos del lenguaje. Por ejemplo sea V = {0,1,2,3,4,5,6,7,8,9}; un lenguaje sobre V es el conjunto N de todos los números naturales en notación decimal, que puede expresarse: N = V * = {x / x є V *, 0 es el 1er. símbolo de N}. La teoría formal de lenguaje fue introducida por primera vez por Noan Chomsky en los años 50. “Un lenguaje formal consiste en un conjunto finito o infinito de cadenas de longitud finita, generadas a partir de un conjunto finito de símbolos llamado alfabeto.” Los lenguajes son conjuntos, lo cual significa que podemos realizar con ellos todas las operaciones de los conjuntos (unión, intersección, diferencia). Además, la operación de concatenación vista para palabras, la podemos extender a los lenguajes denotándola con “.”. Sean L1 y L2 dos lenguajes, luego tenemos que L1.L2 = {w/w=xz / x∈ L1 , z∈ L2}. Otra operación es la llamada “clausura de Kleene” del lenguaje L, denotada con L* donde L* contiene la cadena vacía, el conjunto L y todas las palabras formadas por la concatenación de los elementos de L* (considerar que L* inicialmente tiene a ε y L). Sobre los lenguajes de acuerdo a ciertas propiedades que éstos comparten se definen conjuntos de lenguajes a los cuales llamamos clases de lenguajes.
Año: 2009
pág. 2
Sintaxis y Semántica del Lenguaje UTN FRSF – Apunte Nro. 1
LENGUAJES, GRAMÁTICAS Y AUTÓMATAS
La clasificación de lenguajes en clases de lenguajes se debe a Noan Chomsky, quien propuso una Jerarquía de Lenguajes, en donde las clases más complejas contienen a las clases más simples. De la jerarquía de Chomsky veremos en mayor detalle los lenguajes regulares y los lenguajes independientes del contexto. Los lenguajes regulares son aquellos cuyas palabras contienen “regularidades”, repeticiones de las componentes idénticas como lo podemos ver en el lenguaje L1= {ab, abab, ababab, ….}, las palabras de L1 se generan repitiendo “ab”. Ésta es la idea básica para construir lenguajes regulares, además de considerar que los lenguajes finitos son regulares por definición. Los lenguajes libres del contexto incluyen a los lenguajes regulares. Estos lenguajes son importantes desde un punto de vista práctico dado que la mayoría de los lenguajes de programación están basados en los lenguajes libres del contexto. Muchas construcciones de los lenguajes de programación tienen estructuras anidadas, como por ejemplo, los paréntesis equilibrados, la concordancia de las palabras claves begin y end, los correspondientes if-then-else, etc. Estas estructuras anidadas no están presentes en los lenguajes regulares.
Año: 2009
pág. 3
Sintaxis y Semántica del Lenguaje UTN FRSF – Apunte Nro. 1
LENGUAJES, GRAMÁTICAS Y AUTÓMATAS
- GRAMÁTICAS. DEFINICIONES El concepto de gramática procede de los estudios de Chomsky en su búsqueda de una descripción formalizada de las oraciones de un lenguaje natural. Las gramáticas formales definen un lenguaje describiendo cómo se pueden generar las cadenas del lenguaje. Una gramática formal es una cuádrupla G = (N, T, P, S) donde, - N es un conjunto finito de símbolos no terminales que representan componentes abstractas del lenguaje, - T es un conjunto finito de símbolos terminales, alfabeto, es decir N ∩ T = ∅ - P es un conjunto finito de producciones, reglas de re-escritura que especifican la relación entre cadenas de símbolos terminales y no terminales. Cada regla de producción de P tiene la forma α → β, α = ϕΑρ y β = ϕωρ ϕ,ω,ρ ∈ (N ∪ T)* y A ∈ N S es el símbolo distinguido o axioma S ∈ N. Restringiendo los formatos de las reglas de producción permitidas en una gramática, se pueden especificar cuatro tipos de gramáticas (jerarquía de Chomsky 1959) en los que encontramos las gramáticas regulares (tipo 3), las gramáticas libres de contexto (tipo 2), las gramáticas dependientes del contexto (tipo 1) y las gramáticas estructuradas por frases (tipo 0) y sus correspondientes clases de lenguajes. La siguiente figura muestra como cada tipo añade restricciones al tipo inmediatamente superior y la jerarquía va desde la más general a la más restrictiva.
Tipo 0 Tipo 1 Tipo 2 Tipo 3
GRAMATICAS
Como dijimos antes, cada una de estas gramáticas es capaz de generar un tipo de lenguaje. Un lenguaje L se llama del tipo i (i=0, 1, 2, 3) si existe una gramática del tipo i capaz de generar o describir ese lenguaje. Año: 2009
pág. 4
Sintaxis y Semántica del Lenguaje UTN FRSF – Apunte Nro. 1
LENGUAJES, GRAMÁTICAS Y AUTÓMATAS
Las gramáticas regulares (tipo 3), generan los lenguajes regulares. Son las gramáticas más restrictivas. El lado derecho de una producción debe contener un símbolo terminal y, como máximo, un símbolo no terminal. Estas gramáticas pueden ser: - Lineales a derecha, si todas las producciones son de la forma A∈N A → aB ó A → a B ∈ N - {S} a∈T (en el lado derecho de las producciones el símbolo no terminal aparece a la derecha del símbolo terminal). - Lineales a izquierda, si todas las producciones son de la forma A∈N A → Ba ó A → a B ∈ N - {S} a∈T (en el lado derecho de las producciones el símbolo no terminal aparece a la izquierda del símbolo terminal). En ambos casos, se puede incluir la producción S → ε, si el lenguaje que se quiere generar contiene la cadena vacía. Por ejemplo, las siguientes gramáticas G 1 y G 2, son gramáticas regulares lineales a derecha y lineales a izquierda respectivamente, que generan el lenguaje L = {a 2n / n ≥ 0} G 1 = ({A, B, S1}, {a}, P1, S1) donde P1 es el conjunto: S1 → ε S1 → aA A → aB A→a B → aA
G 2 = ({C, D, S2}, {a}, P2, S2) donde P2 es el conjunto: S2→ ε S2→ Ca C → Da C→a D → Ca
Las gramáticas libres del contexto (tipo 2) generan lenguajes libres del contexto. En una gramática libre de contexto, las reglas de producción son de la forma A→ α donde A∈Nyα∈N∪Τ. La siguiente gramática es un ejemplo de gramática libre de contexto, G = ({S}, {0,1}, P, S), donde P es el conjunto: S → ε, S → 0, S → 1, S → 0S0, S → 1S1. Las gramáticas dependientes del contexto (tipo 1) son aquellas donde las reglas de producción guardan la siguiente forma: αAβ→ αγβ donde A ∈ N , y tanto α como β son cadenas de { N ∪ Τ}* y γ es cadena de {N ∪ Τ}+.
Año: 2009
pág. 5
Sintaxis y Semántica del Lenguaje UTN FRSF – Apunte Nro. 1
LENGUAJES, GRAMÁTICAS Y AUTÓMATAS Se identifican como sensitivas de contexto justamente porque se puede reemplazar A por γ siempre que estén en el contexto α….β. Un ejemplo: G = ({S, R, T, U, V, W}, {a,b,c}, P, S), donde P = { S → aRc, R → aRT | b, bTT → bbUT, UT → UU, UUc → VUc → Vcc, UV → VV, bVc → bbcc, bVV → bbWV, WV → WW, WWc → TWc → Tcc, WT → TT} Las gramáticas sin restricciones (tipo 0) nos permiten generar los lenguajes estructurados por frases o lenguajes sin restricciones. Las gramáticas sin restricciones son el tipo más amplio de gramáticas con producciones de la forma α → β indicando que α puede ser reemplazado por β en cualquier cadena que aparezca. Tanto α como β son cadenas arbitrarias de {N ∪ Τ}* con la única condición de que el lado izquierdo de las reglas de producción contenga al menos un símbolo no terminal, siendo completamente irrestricto en el lado derecho. Esto significa que no existen en estas gramáticas reglas de producción de la forma ε → β, o bien , α → β donde α ∈ T+. El siguiente es un ejemplo de gramáticas sin restricciones: G = ({A, C, S}, {a,b,c}, P, S), donde P = { S → aAbc | ε, A → aAbC | ε, Cb → bC, Cc → cc}.
-
AUTOMÁTAS. DEFINICIONES Los autómatas son entes o máquinas abstractas que prueban la pertenencia o no de cada cadena de símbolos sobre un vocabulario dado a un cierto lenguaje. En el área de los intérpretes, compiladores, traductores y procesadores, es de notable importancia la simulación de procesos encargados del tratamiento de la información. La información se codifica en cadenas de símbolos y un autómata es una máquina formal, es decir sin componentes físicas, que manipula cadenas de símbolos que lee en su entrada generando cadenas de símbolos en su salida. Sabemos que los elementos de un lenguaje L son cadenas de símbolos generadas a partir de un alfabeto y que, establecidas las reglas gramaticales, una determinada cadena sólo pertenecerá al lenguaje L si fue generada siguiendo dichas reglas. En estos casos un autómata que se comporte de tal forma que al recibir una cadena de símbolos, indicando en su salida si la misma pertenece o no al lenguaje L, es un autómata reconocedor de dicho lenguaje.
-
AUTOMÁTAS, LENGUAJES Y GRAMÁTICAS. LA JERARQUÍA DE CHOMSKY La teoría de autómatas que desarrollaremos estará orientada a la relación que queda definida entre el tipo de lenguaje y la estructura misma del autómata con la capacidad de Año: 2009
pág. 6
Sintaxis y Semántica del Lenguaje UTN FRSF – Apunte Nro. 1
LENGUAJES, GRAMÁTICAS Y AUTÓMATAS reconocerlo. En este sentido y al igual que mostramos una jerarquía entre gramáticas y lenguajes, daremos una jerarquía de autómatas y su correspondencia con los lenguajes. Tipo de Autómata
Lenguaje que procesa
Gramática que lo genera
Autómatas Finitos
Lenguajes Regulares
Autómatas de Pila
Lenguajes Libres del Contexto
Autómatas Linealmente Acotados
Lenguajes Dependientes del Contexto
Gramáticas regulares (tipo 3) Gramáticas libres del contexto (tipo 2) Gramáticas dependientes del contexto (tipo 1)
Máquina de Turing
Lenguajes Estructurados por Frases
Gramáticas sin restricciones (tipo 0)
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 las clases de lenguajes generados por ciertos tipos de gramáticas y las clases de lenguajes reconocibles por ciertas máquinas. Así se pueden identificar los lenguajes del tipo 0 con la clase de lenguajes reconocidos por una Máquina de Turing; los lenguajes del tipo 1 con los Autómatas Linealmente Acotados; los lenguajes del tipo 2 con las Autómatas a Pila y los lenguajes del tipo 3 con los Autómatas Finitos. Es decir que hay dos formas de caracterizar un lenguaje de tipo i: como un conjunto de cadenas generado por una gramática de tipo i o como un conjunto de cadenas reconocidas por un autómata que será respectivamente Linealmente Finito, Finito a Pila o el más general de todos, la Máquina de Turing.
Año: 2009
pág. 7
Sintaxis y Semántica del Lenguaje UTN FRSF – Apunte Nro. 1
LENGUAJES, GRAMÁTICAS Y AUTÓMATAS
BIBLIOGRAFÍA DEL APUNTE NRO. 1 1.Peter J.Denning, Jasck B. Dennis, Joseph E. QualitzMachines. Languages, and Computation. Prentice-Hall, 1978. 2.John E. Hopcroft, Jeffrey D. Ullman. Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, 1979. 3.Pedro Isasi, Paloma Martínes, Daniel Borrajo. Lenguajes, Gramáticas y Autómatas Un Enfoque Práctico. Addison-Wesley, 1997.
Año: 2009
pág. 8