stringtranslate.com

Gramática determinista libre de contexto

En la teoría de la gramática formal , las gramáticas deterministas libres de contexto ( DCFG ) son un subconjunto adecuado de las gramáticas libres de contexto . Son el subconjunto de gramáticas libres de contexto que pueden derivarse de autómatas pushdown deterministas y generan lenguajes deterministas libres de contexto . Los DCFG son siempre inequívocos y son una subclase importante de CFG inequívocos; Sin embargo, existen CFG inequívocos y no deterministas.

Los DCFG son de gran interés práctico, ya que se pueden analizar en tiempo lineal y, de hecho, un generador de analizadores puede generar automáticamente un analizador a partir de la gramática . Por tanto, se utilizan ampliamente en toda la informática. Varias formas restringidas de DCFG pueden analizarse mediante analizadores más simples y que requieren menos recursos y, por lo tanto, se utilizan con frecuencia. Se hace referencia a estas clases de gramática por el tipo de analizador que las analiza, y ejemplos importantes son LALR , SLR y LL .

Historia

En la década de 1960, la investigación teórica en informática sobre expresiones regulares y autómatas finitos condujo al descubrimiento de que las gramáticas libres de contexto son equivalentes a autómatas pushdown no deterministas . [1] [2] [3] Se pensaba que estas gramáticas capturaban la sintaxis de los lenguajes de programación de computadoras. Los primeros lenguajes de programación informática de alto nivel estaban en desarrollo en ese momento (ver Historia de los lenguajes de programación ) y escribir compiladores era difícil. Pero el uso de gramáticas libres de contexto para ayudar a automatizar la parte de análisis del compilador simplificó la tarea. Las gramáticas deterministas libres de contexto eran particularmente útiles porque podían ser analizadas secuencialmente por un autómata pushdown determinista , lo cual era un requisito debido a limitaciones de memoria de la computadora. [4] En 1965, Donald Knuth inventó el analizador LR(k) y demostró que existe una gramática LR(k) para cada lenguaje determinista libre de contexto. [5] Este analizador todavía requería mucha memoria. En 1969, Frank DeRemer inventó los analizadores LALR y Simple LR , ambos basados ​​en el analizador LR y con requisitos de memoria muy reducidos a costa de una menor capacidad de reconocimiento de lenguaje. El analizador LALR fue la alternativa más fuerte. [6] Desde entonces, estos dos analizadores se han utilizado ampliamente en compiladores de muchos lenguajes informáticos. Investigaciones recientes han identificado métodos mediante los cuales se pueden implementar analizadores LR canónicos con requisitos de tabla drásticamente reducidos en comparación con el algoritmo de creación de tablas de Knuth. [7]

Ver también

Referencias

  1. ^ Chomsky, Noam (1962). "Gramáticas libres de contexto y almacenamiento pushdown". Informe de progreso trimestral, Laboratorio de investigación en electrónica del MIT . 65 : 187-194.
  2. ^ Todos, RJ (1963). "Aplicación de máquinas Pushdown-Store". 1963 Actas de la AFIPS de la conferencia informática conjunta de otoño : 215–227.
  3. ^ Schützenberger, Marcel Paul (1963). "Sobre lenguajes libres de contexto y autómatas push-down". Información y Control . 6 (3): 246–264. doi : 10.1016/s0019-9958(63)90306-1 .
  4. ^ A. Salomaa ; D. Madera; S. Yu, eds. (2001). Medio siglo de teoría de los autómatas . Publicaciones científicas mundiales. págs. 38–39.
  5. ^ Knuth, DE (julio de 1965). "Sobre la traducción de idiomas de izquierda a derecha". Información y Control . 8 (6): 607–639. doi : 10.1016/S0019-9958(65)90426-2 .
  6. ^ Franklin L. DeRemer (1969). "Traductores prácticos para idiomas LR (k)" (PDF) . MIT, Tesis doctoral. Archivado desde el original (PDF) el 5 de abril de 2012.
  7. ^ X. Chen, Medición y ampliación del análisis LR (1), tesis doctoral de la Universidad de Hawaii, 2009.