11.07.2015 Views

Teor´ıa de Autómatas y Lenguajes Formales

Teor´ıa de Autómatas y Lenguajes Formales

Teor´ıa de Autómatas y Lenguajes Formales

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

80 CHAPTER 5.ACEPTACIÓN Y GENERACIÓN DE LENGUAJES LIBRES DE CONTEXTO5.3 Gramáticas Libres <strong>de</strong> ContextoUna gramática libre <strong>de</strong> contexto es un conjunto finito <strong>de</strong> variables (también llamadas no-terminales o categoríassintácticas) cada una <strong>de</strong> las cuales representa un lenguaje. Estos lenguajes <strong>de</strong>scritos por las variablesse <strong>de</strong>finen recursivamente en términos <strong>de</strong> otros y <strong>de</strong> símbolos llamados terminales. Las reglas que relacionanlas variables son llamadas producciones. Una producción típica dirá que el lenguaje asociado a una variableestá formado por strings generados al concatenar strings <strong>de</strong> los lenguajes <strong>de</strong> algunas otras variables y algunosterminales.La motivación original para las gramáticas libres <strong>de</strong> contexto fue la <strong>de</strong>scripción <strong>de</strong> lenguajes naturales.Por ejemplo, es posible escribir reglas como:< sentencia > → < sujeto > < predicado >< sujeto > → < sujeto > < adjetivo >< sujeto > → < artículo > < sustantivo >< adjetivo > → < roja >< sustantivo > → < casa >< artículo > → < la >en que las categorías sintácticas están escritas entre paréntesis en ángulo (< >), y los terminales sin ellos.Por ejemplo, < sujeto > es una categoría sintáctica y casa es un terminal.El significado <strong>de</strong> la regla< sentencia >→< sujeto > < predicado >es que una manera <strong>de</strong> formar una sentencia (un string en el lenguaje <strong>de</strong> la categoría sintáctica < sentencia >)es tomar un sujeto y seguirlo <strong>de</strong> un predicado. El significado <strong>de</strong> la regla< sustantivo >→< casa >es que el string que consta <strong>de</strong>l símbolo terminal casa, está en el lenguaje <strong>de</strong> la categoría < sustantivo >.Nótese que casa es un solo símbolo terminal en este caso, no un string <strong>de</strong> 4 símbolos.Las gramáticas libres <strong>de</strong> contexto no se consi<strong>de</strong>ran, en general, apropiadas para la <strong>de</strong>scripción <strong>de</strong> lenguajesregulares naturales como el Castellano. Por ejemplo, si se extien<strong>de</strong>n las producciones anteriores a todo elCastellano, es posible <strong>de</strong>rivar “frío” como un sujeto y “es caliente” como un predicado. Por lo tanto “frío escaliente” sería una sentencia, lo que no tiene sentido. Aún así, las gramáticas libres <strong>de</strong> contexto juegan unrol importante en lingüística computacional.Mientras los lingüistas estudiaban gramáticas libres <strong>de</strong> contexto, los cientistas <strong>de</strong> computación comenzarona <strong>de</strong>scribir los lenguajes <strong>de</strong> programación con una notación llamada “Backus-Naur Form (BNF)”;que en realidad correspon<strong>de</strong> a la notación para gramáticas libres <strong>de</strong> contexto con algunos cambios menoresy algunas abreviaciones en la <strong>de</strong>scripción. Este uso <strong>de</strong> las gramáticas libres <strong>de</strong> contexto ha simplificadoenormemente la <strong>de</strong>finición <strong>de</strong> los lenguajes <strong>de</strong> programación y la construcción <strong>de</strong> compiladores. La razón <strong>de</strong>este éxito es <strong>de</strong>bida, en parte, a la forma natural en que la mayoría <strong>de</strong> las construcciones <strong>de</strong> los lenguajes<strong>de</strong> programación se pue<strong>de</strong>n <strong>de</strong>scribir usando gramáticas. Por ejemplo, consi<strong>de</strong>re el siguiente conjunto <strong>de</strong>producciones.< expresion > → < expresion > + < expresion >< expresion > → < expresion > ∗ < expresion >< expresion > → (< expresion >)< expresion > → idque <strong>de</strong>fine las expresiones aritméticas con operadores + y ∗, y operandos representados por el símboloid. En ellas, < expresión > es la única variable y los terminales son los símbolos +, ∗, (, ) e id.Las dos primeras producciones indican que una expresión pue<strong>de</strong> estar compuesta por dos expresionesconectadas por un signo <strong>de</strong> suma o multiplicación. La tercera indica que una expresión encerrada porparéntesis es también una expresión. La última indica que un operando es también una expresión.Utilizando repetidamente las producciones, se pue<strong>de</strong>n obtener expresiones cada vez más complicadas.Por ejemplo,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!