La presente obra trata acerca de la definición de lenguajes formales mediante procesos que especifiquen su estructura de una manera precisa con ayuda de gramáticas. Además de un acercamiento detallado al uso de herramientas para reconocer cadenas que pertenecen a lenguajes específicos, como son los autómatas finitos tanto deterministas como no deterministas y las expresiones regulares.
El contenido inicia con la introducción a los lenguajes de programación, su definición, clasificación e historia. Luego se trata el tema de las gramáticas desde una perspectiva conceptual para definir la clasificación que hizo Noam Chomsky hace más de 50 años y que aún sigue siendo un paradigma válido.
Con dicha clasificación se determinan cuatro tipos de gramáticas, de las cuales, se tratarán a detalle las dos más restrictivas. Éstas se utilizan para la creación de lenguajes de programación. Además de la clasificación, también se determinan herramientas que ayudan al entendimiento de dichos lenguajes para el reconocimiento de sus cadenas.
Estas herramientas son los autómatas finitos tanto deterministas como no deterministas. Éstos pueden elaborarse de una manera gráfica; de una manera descriptiva; o de una manera tabular. Las expresiones regulares, que son formas más declarativas que ayudan al reconocimiento de cadenas desde la perspectiva de programación. Las gramáticas, que para este caso se hace referencia a las gramáticas regulares y la manera de conversión entre las distintas herramientas.
Luego, se tratan las gramáticas independientes del contexto, que están más enfocadas a la creación de lenguajes de programación, y con la ayuda de su herramienta por excelencia, los autómatas a pila. Éstos son una extensión de los autómatas finitos pero con la apoyo de una estructura de datos tipo pila.
Finalmente, se determinan dos tipos de analizadores sintácticos, que con eso también se establece que las gramáticas deben estar escritas de manera adecuada para que el analizador seleccionado sea eficiente. Entre los temas tratado están el cómo quitar la ambigüedad de las gramáticas, cómo quitar la recursividad por la izquierda y cómo factorizarla, para que su uso sea el más apropiado y eficiente.
Mientras se abordan los diferentes temas, se hace uso de la herramienta de software llamada JFLAP –con el debido permiso del contacto del proyecto Susan Rodger de Duke University– para elaborar de manera gráfica los autómatas y también se utiliza para conversiones entre distintas herramientas de lenguajes formales.
El contenido inicia con la introducción a los lenguajes de programación, su definición, clasificación e historia. Luego se trata el tema de las gramáticas desde una perspectiva conceptual para definir la clasificación que hizo Noam Chomsky hace más de 50 años y que aún sigue siendo un paradigma válido.
Con dicha clasificación se determinan cuatro tipos de gramáticas, de las cuales, se tratarán a detalle las dos más restrictivas. Éstas se utilizan para la creación de lenguajes de programación. Además de la clasificación, también se determinan herramientas que ayudan al entendimiento de dichos lenguajes para el reconocimiento de sus cadenas.
Estas herramientas son los autómatas finitos tanto deterministas como no deterministas. Éstos pueden elaborarse de una manera gráfica; de una manera descriptiva; o de una manera tabular. Las expresiones regulares, que son formas más declarativas que ayudan al reconocimiento de cadenas desde la perspectiva de programación. Las gramáticas, que para este caso se hace referencia a las gramáticas regulares y la manera de conversión entre las distintas herramientas.
Luego, se tratan las gramáticas independientes del contexto, que están más enfocadas a la creación de lenguajes de programación, y con la ayuda de su herramienta por excelencia, los autómatas a pila. Éstos son una extensión de los autómatas finitos pero con la apoyo de una estructura de datos tipo pila.
Finalmente, se determinan dos tipos de analizadores sintácticos, que con eso también se establece que las gramáticas deben estar escritas de manera adecuada para que el analizador seleccionado sea eficiente. Entre los temas tratado están el cómo quitar la ambigüedad de las gramáticas, cómo quitar la recursividad por la izquierda y cómo factorizarla, para que su uso sea el más apropiado y eficiente.
Mientras se abordan los diferentes temas, se hace uso de la herramienta de software llamada JFLAP –con el debido permiso del contacto del proyecto Susan Rodger de Duke University– para elaborar de manera gráfica los autómatas y también se utiliza para conversiones entre distintas herramientas de lenguajes formales.