
Una gramática formal es un conjunto de símbolos y las reglas de producción para reescribir algunos de ellos en todas las posibles secuencias de un lenguaje formal sobre un alfabeto . Una gramática no describe el significado de las secuencias , sino solo su forma.
En matemáticas aplicadas , la teoría del lenguaje formal es la disciplina que estudia las gramáticas y los lenguajes formales. Sus aplicaciones se encuentran en la informática teórica , la lingüística teórica , la semántica formal , la lógica matemática y otras áreas.
Una gramática formal es un conjunto de reglas para reescribir cadenas, junto con un "símbolo inicial" desde el cual comienza la reescritura. Por lo tanto, una gramática se suele considerar un generador de lenguaje. Sin embargo, también puede usarse como base para un analizador sintáctico , una función informática que determina si una cadena dada pertenece al lenguaje o es gramaticalmente incorrecta. Para describir dichos analizadores sintácticos, la teoría de lenguajes formales utiliza formalismos separados, conocidos como teoría de autómatas . Una consecuencia de la teoría de autómatas es que no es posible diseñar un reconocedor para ciertos lenguajes formales. [ 1 ]
Muchos idiomas estructuran el significado de sus cadenas de caracteres según su sintaxis , una práctica conocida como semántica composicional . En estos casos, el primer paso para describir el significado de una cadena es descomponerla parte por parte y analizar su forma (conocida como árbol de análisis sintáctico en informática y como estructura profunda en gramática generativa ).
Ejemplo introductorio
Una gramática consiste principalmente en un conjunto de reglas de producción , reglas de reescritura para transformar cadenas de caracteres. Cada regla especifica la sustitución de una cadena particular (su lado izquierdo ) por otra (su lado derecho ). Una regla se puede aplicar a cada cadena que contenga su lado izquierdo, produciendo una cadena en la que una aparición de dicho lado izquierdo se ha sustituido por su lado derecho.
A diferencia de un sistema semi-Thue , que se define completamente por estas reglas, una gramática distingue además entre dos tipos de símbolos: símbolos no terminales y símbolos terminales ; cada lado izquierdo debe contener al menos un símbolo no terminal. También distingue un símbolo no terminal especial, llamado símbolo de inicio .
El lenguaje generado por la gramática se define como el conjunto de todas las cadenas sin símbolos no terminales que pueden generarse a partir de una cadena que consta de un único símbolo inicial mediante la aplicación (posiblemente repetida) de sus reglas de cualquier forma posible. Si existen formas esencialmente diferentes de generar la misma cadena, se dice que la gramática es ambigua .
En los siguientes ejemplos, los símbolos terminales son a y b , y el símbolo inicial es S.
Ejemplo 1
Supongamos que tenemos las siguientes reglas de producción:
- 1.
- 2.
Luego comenzamos con S y podemos elegir una regla para aplicarle. Si elegimos la regla 1, obtenemos la cadena aSb . Si volvemos a elegir la regla 1, reemplazamos S con aSb y obtenemos la cadena aaSbb . Si ahora elegimos la regla 2, reemplazamos S con ba y obtenemos la cadena aababb , y hemos terminado. Podemos escribir esta serie de elecciones de forma más breve, usando símbolos:.
El lenguaje de la gramática es el conjunto infinito., dóndeesrepetidoveces (yen particular representa el número de veces que se ha aplicado la regla de producción 1). Esta gramática es libre de contexto (solo aparecen no terminales simples como lados izquierdos) y no ambigua.
Ejemplos 2 y 3
Supongamos que las reglas son estas:
- 1.
- 2.
- 3.
Esta gramática no es libre de contexto debido a la regla 3 y es ambigua debido a las múltiples formas en que la regla 2 puede usarse para generar secuencias des.
Sin embargo, el lenguaje que genera es simplemente el conjunto de todas las cadenas no vacías que consisten ens y/os. Esto es fácil de ver: para generar unde un, use la regla 2 dos veces para generar, luego la regla 1 dos veces y la regla 3 una vez para producir. Esto significa que podemos generar secuencias no vacías arbitrarias dey luego reemplace cada uno de ellos conocomo queramos.
Ese mismo lenguaje puede generarse alternativamente mediante una gramática no ambigua y libre de contexto; por ejemplo, la gramática regular con reglas.
- 1.
- 2.
- 3.
- 4.
Definición
La sintaxis de las gramáticas
En la formalización clásica de las gramáticas generativas propuesta por primera vez por Noam Chomsky en la década de 1950, [ 2 ] [ 3 ] una gramática G consta de los siguientes componentes:
- Un conjunto finito N de símbolos no terminales , que es disjunto con las cadenas formadas a partir de G.
- Un conjunto finitode símbolos terminales que es disjunto de N.
- Un conjunto finito P de reglas de producción , cada regla de la forma
- dóndees el operador estrella de Kleene ydenota la unión de conjuntos . Es decir, cada regla de producción mapea una cadena de símbolos a otra, donde la primera cadena (la "cabeza") contiene un número arbitrario de símbolos siempre que al menos uno de ellos sea un no terminal. En el caso de que la segunda cadena (el "cuerpo") consista únicamente en la cadena vacía , es decir, que no contenga ningún símbolo , puede denotarse con una notación especial (a menudo, e o) para evitar confusiones. Dicha regla se denomina regla de borrado . [ 4 ]
- Un símbolo distinguidoEse es el símbolo de inicio , también llamado símbolo de oración .
Una gramática se define formalmente como la tupla. Dicha gramática formal se denomina a menudo sistema de reescritura o gramática de estructura de frases en la literatura. [ 5 ] [ 6 ]
Algunas construcciones matemáticas relacionadas con las gramáticas formales
El funcionamiento de una gramática se puede definir en términos de relaciones sobre cadenas de caracteres:
- Dada una gramática, la relación binaria(pronunciado como "G deriva en un paso") en cuerdas ense define por:
- la relación(pronunciado como G deriva en cero o más pasos ) se define como el cierre transitivo reflexivo de
- aLa forma oracional es un miembro deque se puede derivar en un número finito de pasos desde el símbolo inicial; es decir, una forma oracional es un miembro de. Una forma sentencial que no contiene símbolos no terminales (es decir, es un miembro de) se llama oración . [ 7 ]
- el idioma de, denotado como, se define como el conjunto de oraciones construidas por.
La gramáticaes efectivamente el sistema semi-Thue, reescribiendo cadenas exactamente de la misma manera; la única diferencia radica en que distinguimos símbolos no terminales específicos , que deben ser reemplazados en las reglas de reescritura, y solo nos interesan las reescrituras desde el símbolo inicial designado.a cadenas sin símbolos no terminales.
Ejemplo
Para estos ejemplos, los lenguajes formales se especifican utilizando la notación de construcción de conjuntos .
Consideremos la gramáticadónde,,es el símbolo de inicio, yConsta de las siguientes reglas de producción:
- 1.
- 2.
- 3.
- 4.
Esta gramática define el idioma.dóndedenota una cadena de n caracteres consecutivos's. Por lo tanto, el lenguaje es el conjunto de cadenas que constan de 1 o más's, seguido del mismo número de's, seguido del mismo número de's.
Algunos ejemplos de la derivación de cadenas enson:
- (Sobre la notación:(El texto dice: "La cadena P genera la cadena Q mediante la producción i ", y la parte generada se indica cada vez en negrita).
La jerarquía de Chomsky
Cuando Noam Chomsky formalizó por primera vez las gramáticas generativas en 1956, [ 2 ] las clasificó en tipos que ahora se conocen como la jerarquía de Chomsky . La diferencia entre estos tipos es que tienen reglas de producción cada vez más estrictas y, por lo tanto, pueden expresar menos lenguajes formales. Dos tipos importantes son las gramáticas libres de contexto (Tipo 2) y las gramáticas regulares (Tipo 3). Los lenguajes que se pueden describir con una gramática de este tipo se llaman lenguajes libres de contexto y lenguajes regulares , respectivamente. Aunque mucho menos potentes que las gramáticas no restringidas (Tipo 0), que de hecho pueden expresar cualquier lenguaje que pueda ser aceptado por una máquina de Turing , estos dos tipos restringidos de gramáticas son los más utilizados porque se pueden implementar analizadores sintácticos para ellos de manera eficiente. [ 8 ] Por ejemplo, todos los lenguajes regulares pueden ser reconocidos por una máquina de estados finitos , y para subconjuntos útiles de gramáticas libres de contexto existen algoritmos bien conocidos para generar analizadores sintácticos LL y LR eficientes para reconocer los lenguajes correspondientes que generan esas gramáticas.
Gramáticas libres de contexto
Una gramática libre de contexto es una gramática en la que el lado izquierdo de cada regla de producción consta de un único símbolo no terminal. Esta restricción no es trivial; no todos los lenguajes pueden generarse mediante gramáticas libres de contexto. Aquellos que sí pueden se denominan lenguajes libres de contexto .
El idiomaLa definición anterior no es un lenguaje libre de contexto, y esto se puede probar rigurosamente utilizando el lema de bombeo para lenguajes libres de contexto , pero por ejemplo el lenguaje(al menos 1seguido por el mismo número de's) es independiente del contexto, ya que puede definirse mediante la gramática.con,,el símbolo de inicio y las siguientes reglas de producción:
- 1.
- 2.
Un lenguaje libre de contexto puede ser reconocido entiempo ( ver notación Big O ) por un algoritmo como el reconocedor de Earley y en un tiempo subcúbico por algoritmos rápidos de multiplicación de matrices . [ 9 ] Es decir, para cada lenguaje libre de contexto, se puede construir una máquina que toma una cadena como entrada y determina entiempo si la cadena es miembro del lenguaje, dondees la longitud de la cadena. [ 10 ] Los lenguajes libres de contexto deterministas son un subconjunto de lenguajes libres de contexto que pueden ser reconocidos en tiempo lineal. [ 11 ] Existen varios algoritmos que se dirigen a este conjunto de lenguajes o a algún subconjunto del mismo.
Gramáticas regulares
En las gramáticas regulares , el lado izquierdo vuelve a ser un único símbolo no terminal, pero ahora el lado derecho también está restringido. El lado derecho puede ser la cadena vacía, un único símbolo terminal o un único símbolo terminal seguido de un símbolo no terminal, pero nada más. (A veces se utiliza una definición más amplia: se permiten cadenas más largas de terminales o de símbolos no terminales sin nada más, lo que facilita la designación de los lenguajes sin dejar de definir la misma clase de lenguajes).
El idiomaLa definición anterior no es regular, pero el lenguaje(al menos 1seguido de al menos 1(donde los números pueden ser diferentes) es, como puede definirse mediante la gramáticacon,,el símbolo de inicio y las siguientes reglas de producción:
Todos los lenguajes generados por una gramática regular pueden ser reconocidos entiempo por una máquina de estados finitos. Aunque en la práctica las gramáticas regulares se expresan comúnmente mediante expresiones regulares , algunas formas de expresiones regulares utilizadas en la práctica no generan estrictamente los lenguajes regulares y no muestran un rendimiento de reconocimiento lineal debido a esas desviaciones.
Otras formas de gramáticas generativas
Se han desarrollado numerosas extensiones y variaciones de la jerarquía original de gramáticas formales de Chomsky, tanto por lingüistas como por informáticos, generalmente con el fin de aumentar su poder expresivo o de facilitar su análisis o interpretación. Algunas formas de gramáticas desarrolladas incluyen:
- Las gramáticas de adjunción de árboles aumentan la expresividad de las gramáticas generativas convencionales al permitir que las reglas de reescritura operen en árboles de análisis sintáctico en lugar de solo cadenas. [ 12 ]
- Las gramáticas de afijos [ 13 ] y las gramáticas de atributos [ 14 ] [ 15 ] permiten que las reglas de reescritura se amplíen con atributos y operaciones semánticas, útiles tanto para aumentar la expresividad gramatical como para construir herramientas prácticas de traducción de idiomas.
Gramáticas recursivas
Una gramática recursiva es aquella que contiene reglas de producción recursivas . Por ejemplo, una gramática para un lenguaje libre de contexto es recursiva por la izquierda si existe un símbolo no terminal A que, al pasar por las reglas de producción, genera una cadena con A como el símbolo más a la izquierda. [ 16 ] Un ejemplo de gramática recursiva es una cláusula dentro de una oración separada por dos comas. [ 17 ] Todos los tipos de gramáticas en la jerarquía de Chomsky pueden ser recursivos.
Gramáticas analíticas
Aunque existe una enorme cantidad de bibliografía sobre algoritmos de análisis sintáctico , la mayoría de estos algoritmos parten de la base de que el lenguaje que se va a analizar se describe inicialmente mediante una gramática formal generativa , y que el objetivo es transformar esta gramática generativa en un analizador sintáctico funcional. En rigor, una gramática generativa no se corresponde en absoluto con el algoritmo utilizado para analizar un lenguaje, y los distintos algoritmos imponen diferentes restricciones sobre la forma de las reglas de producción que se consideran bien formadas.
Un enfoque alternativo consiste en formalizar el lenguaje en términos de una gramática analítica desde el principio, lo cual se corresponde más directamente con la estructura y la semántica de un analizador sintáctico para dicho lenguaje. Algunos ejemplos de formalismos de gramática analítica son los siguientes:
- Lenguaje de análisis descendente (TDPL): un formalismo gramatical analítico altamente minimalista desarrollado a principios de la década de 1970 para estudiar el comportamiento de los analizadores descendentes . [ 18 ]
- Gramáticas de enlace : una forma de gramática analítica diseñada para la lingüística , que deriva la estructura sintáctica examinando las relaciones posicionales entre pares de palabras. [ 19 ] [ 20 ]
- Gramáticas de expresiones de análisis (PEG): una generalización más reciente de TDPL diseñada en torno a las necesidades prácticas de expresividad de los escritores de lenguajes de programación y compiladores . [ 21 ]
Véase también
Referencias
- ↑ Meduna, Alexander (2014), Lenguajes formales y computación: modelos y sus aplicaciones , CRC Press, pág. 233, ISBN 9781466513457Para más información sobre este tema, véase el problema indecidible .
- 1 2 Chomsky, Noam (septiembre de 1956). "Tres modelos para la descripción del lenguaje". IRE Transactions on Information Theory . 2 (3): 113– 124. Bibcode : 1956IRTIT...2..113C . doi : 10.1109/TIT.1956.1056813 . S2CID 19519474 .
- ↑ Chomsky, Noam (1957). Estructuras sintácticas . La Haya: Mouton .
- ↑ Ashaari, S.; Turaev, S.; Okhunov, A. (2016). "Gramáticas controladas estructural y aritméticamente" (PDF) . Revista internacional sobre computación perceptiva y cognitiva . 2 (2): 27. doi : 10.31436/ijpcc.v2i2.39 . Consultado el 5 de noviembre de 2024 .
- ↑ Ginsburg, Seymour (1975). Propiedades algebraicas y de teoría de autómatas de los lenguajes formales . North-Holland. págs. 8–9 . ISBN 978-0-7204-2506-2.
- ↑ Harrison, Michael A. (1978). Introducción a la teoría del lenguaje formal . Reading, Mass.: Addison-Wesley Publishing Company. pág. 13. ISBN 978-0-201-02955-0.
- ↑ Formas oracionales archivadas el 13/11/2019 en Wayback Machine , Gramáticas libres de contexto, David Matuszek
- ↑ Grune, Dick y Jacobs, Ceriel H., Técnicas de análisis sintáctico : una guía práctica , Ellis Horwood, Inglaterra, 1990.
- ↑ Valiant, Leslie (1975). "Reconocimiento general libre de contexto en menos de tiempo cúbico". Journal of Computer and System Sciences . 10 (2): 308– 315. doi : 10.1016/S0022-0000(75)80046-8 .
- ↑ Earley, Jay, " Un algoritmo de análisis sintáctico libre de contexto eficiente archivado el 19 de mayo de 2020 en Wayback Machine ", Communications of the ACM , vol. 13, n.° 2, págs. 94-102, febrero de 1970.
- ↑ Knuth, DE (julio de 1965). "Sobre la traducción de lenguas de izquierda a derecha". Information and Control . 8 (6): 607– 639. doi : 10.1016/S0019-9958(65)90426-2 .
- ↑ Joshi, Aravind K., et al. , " Tree Adjunct Grammars ," Journal of Computer Systems Science , Vol. 10 No. 1, pp. 136-163, 1975.
- ↑ Koster, Cornelis HA, "Gramáticas de afijos", en Implementación de ALGOL 68 , North Holland Publishing Company, Ámsterdam, págs. 95-109, 1971.
- ↑ Knuth, Donald E., " Semántica de los lenguajes libres de contexto ", Mathematical Systems Theory , vol. 2, n.º 2, págs. 127-145, 1968.
- ↑ Knuth, Donald E., "Semántica de los lenguajes libres de contexto (corrección)", Mathematical Systems Theory , vol. 5, n.º 1, págs. 95-96, 1971.
- ↑ Notas sobre teoría del lenguaje formal y análisis sintáctico. Archivado el 28 de agosto de 2017 en Wayback Machine . James Power, Departamento de Ciencias de la Computación, Universidad Nacional de Irlanda, Maynooth, Condado de Kildare, Irlanda. JPR02
- ↑ Borenstein, Seth (27 de abril de 2006). "Los pájaros cantores también entienden la gramática" . Northwest Herald . pág. 2 – vía Newspapers.com.
- ↑ Birman, Alexander, El esquema de reconocimiento TMG , tesis doctoral, Universidad de Princeton, Departamento de Ingeniería Eléctrica, febrero de 1970.
- ↑ Sleator, Daniel D. y Temperly, Davy, " Análisis del inglés con una gramática de enlaces ", Informe técnico CMU-CS-91-196, Departamento de Informática de la Universidad Carnegie Mellon, 1991.
- ↑ Sleator, Daniel D. y Temperly, Davy, "Análisis sintáctico del inglés con una gramática de enlaces", Tercer Taller Internacional sobre Tecnologías de Análisis Sintáctico , 1993. (Versión revisada del informe anterior).
- ↑ Ford, Bryan, Packrat Parsing: a Practical Linear-Time Algorithm with Backtracking , tesis de maestría, Instituto Tecnológico de Massachusetts, septiembre de 2002.
- Lenguajes formales
- Gramática
- Lógica matemática
- Sintaxis
- Autómatas (computación)
- Lingüística matemática