En la teoría del lenguaje formal, una gramática independiente del contexto ( CFG ) del es una gramática en la cual cada regla de la producción está del &rarr del V del de la forma; w donde está el V un símbolo no terminal del solo, y el w es una cadena de terminales y/o de nonterminals (posiblemente vacíos). El " del término; contexto-free" expresa el hecho de que los nonterminals se pueden reescribir sin consideración alguna hacia el contexto en el cual ocurren. Un lenguaje formal es el sin contexto si una cierta gramática independiente del contexto lo genera.

Las gramáticas independientes del contexto desempeñan un papel fundamental en la descripción y el diseño de los lenguajes de programación y de los recopiladores . También se utilizan para analizar el sintaxis de las idiomas naturales

Fondo

Desde la época Pāṇini, por lo menos, los lingüistas han descrito las gramáticas de idiomas en términos de su estructura de bloque, y las palabras o los elementos de palabra descritos cómo las oraciones son el recurrentemente aumentadas de frases más pequeñas, y eventual individuales.

La gramática independiente del contexto (o " grammar" de la frase-estructura; en los años 50 mid-, tomó la manera en la cual la lingüística había descrito esta estructura gramatical, y entonces dado vuelta le en matemáticas rigurosas. Una gramática independiente del contexto proporciona un mecanismo simple y exacto para describir los métodos por los cuales las frases en algún de lenguaje natural son construidas de bloques más pequeños, capturando el " structure" del bloque; de oraciones de una manera natural. Su simplicidad hace el formalismo favorable al estudio matemático riguroso, pero viene en un precio: las características importantes del sintaxis de lenguaje natural tales como acuerdo y referencia no se pueden expresar en una manera natural, o en absoluto.

La estructura de bloque fue introducida en los lenguajes de programación de la computadora por el proyecto del ALGOL, que, por consiguiente, también ofreció una gramática independiente del contexto para describir el sintaxis resultante del ALGOL. Ésta se convirtió en una característica estándar de los lenguajes de programación, y la notación para las gramáticas usadas en descripciones concretas de los lenguajes de programación vino ser conocida como forma de Backus-Naur, después de que dos miembros de la lengua del ALGOL diseñen a comité.

El " structure" del bloque; el aspecto que la captura de las gramáticas independientes del contexto es tan fundamental a la gramática que los términos sintaxis y gramática se identifican a menudo con gramática independiente del contexto gobierna, especialmente en de informática. Los apremios formales no capturados por la gramática entonces se consideran ser parte del " semantics" de la lengua.

Las gramáticas independientes del contexto son bastante simples permitir la construcción de los algoritmos de análisis sintáctico eficientes que, para una secuencia dada, determinan si y cómo pueden ser generados de la gramática. Un programa de análisis de Earley es un ejemplo de tal algoritmo, mientras que los programas de análisis ampliamente utilizados LR y LL son algoritmos más eficientes que se ocupan solamente de subconjuntos más restrictivos de gramáticas independientes del contexto.

Definiciones formales

Un G de la gramática independiente del contexto es 4 - el Tuple :

G = (V \, \ sigma \, R \, S \,) donde

1. el V \, es un sistema finito de carácteres o de variables no terminales del . Representan diversos tipos de frase o de cláusula en la oración. El \ la sigma \, es un sistema finito del terminal s del, desunen con el V \, , los cuales componen el contenido real de la oración. el S \, es la variable del comienzo, usada para representar la oración entera (o el programa). Debe ser un elemento del V \, . el R \, es una relación del V \, al ^ del (V \ taza \ sigma) {*} de tal que existe el \ \, w \ en (V \ taza \ sigma) ^ {*}: (S, w) \ en R.

Además, el R \, es un sistema finito. Llaman los miembros del R \, la regla s del o la producción s del de la gramática. El asterisco representa la operación de la estrella de Kleene.

definición adicional 1

Para cualquie secuencia u, v \ en (V \ taza \ sigma) ^ {*} , decimos u \, rinde v \, , escrito como u \ Rightarrow v \, , si \ existe (\ alfa, \) beta \ en R, u_ {1}, u_ {2} \ en (V \ taza \ sigma) el ^ {*} tales que u \, =u_ {1} \ u_ alfa {2} y v \, =u_ {1} \ u_ beta {2} . ¡Así, \! ¡v es el resultado de aplicar el de la regla \! ¡(\ alfa, \ beta) al \! u.

definición adicional 2

Para cualquie u, v \ en (V \ taza \ sigma) ^ {*}, u \ stackrel {*} {\ Rightarrow} v (o u \ Rightarrow \ Rightarrow v \, en algún libro de textos) si existe el \ el u_ {1}, u_ {2}, \ cdots u_ {k} \ en (V \ taza \ sigma) ^ {*}, k \ geq 0 tal que u \ Rightarrow u_ {1} \ Rightarrow u_ {2} \ cdots \ Rightarrow u_ {} \ Rightarrow v de k

definición adicional 3

La lengua de un G de la gramática = (V \, \ sigma \, R \, S \,) es el sistema L del

l (G) = \ {w \ en \ Sigma^ {*}: S \ stackrel {*} {\ Rightarrow} w \}

definición adicional 4

Un L de la lengua \, reputa una lengua sin contexto (CFL) si existe un CFG, un G \, tales que L \, = \, L (G).

Ejemplos

Ejemplo 1

Se da una gramática independiente del contexto simple como: &rarr del
S del
; aSb | ab; donde | se utiliza para separar las opciones múltiples para iguales no terminales; éste es tan igual que &rarr del
S del
; &rarr del
S del aSb; ab Los terminales aquí son al y el b, mientras que el único no terminal es S. Esta gramática genera el de la lengua \ {un ^n del ^ NOTA: n \ GE 1 \} que no es el regular.

El &epsilon del carácter especial; soportes para la secuencia vacía. Cambiando la gramática antedicha a: &rarr de S; aSb | ε obtenemos una gramática que genera el de la lengua \ {un ^n del ^ NOTA: n \ GE 0 \} en lugar de otro. Esto diferencia solamente en que contiene la secuencia vacía mientras que no hizo la gramática original.

Ejemplo 2

Aquí está una gramática independiente del contexto para las expresiones algebraicas del infijo sintácticamente correcto en las variables x, y y z: &rarr del
S del
; x | y | z | S + S | S - S | S * S | S/S | (s)

Esta gramática puede, por ejemplo, generar el " de la secuencia; (x + y) * x - z * y/(x + x)" como sigue: " S" es la secuencia inicial. " S - S" es el resultado de aplicar el quinto &rarr de la transformación; S - S al S. " S * S - S/S" es el resultado de aplicar el sexto transforma al primer S y séptimo al segundo S. " (S) * S - S/(S)" es el resultado de aplicar el final transforma a seguro de los nonterminals. " (S + S) * S - S * S/(S + S) " es el resultado del cuarto y fifth transforma a ciertos nonterminals. " (x + y) * x - z * y/(x + x)" es el resultado final, obtenido usando las primeras tres transformaciones para dar vuelta a los nonterminals de S en los terminales x, y, y Z.

Esta gramática es el ambiguo, significando que uno puede generar la misma secuencia con más de un analiza el árbol . Por ejemplo, " x + y * z" pudo tener o + o * analizado primero; éstos producirán probablemente diversos resultados.

Ejemplo 3

Una gramática independiente del contexto para la lengua que consiste en todas las secuencias encima {a, b} para el cual el número de a y los b son diferentes es &rarr del
S del
; U | V &RARR DEL
U; TaU | &rarr del
V del TaT; TbV | &rarr del
T de TbT; aTbT | bTaT | ε Aquí, el T no terminal puede generar todas las secuencias con el mismo número de a que los b, el U no terminal genera todas las secuencias con más a que los b y el V no terminal genera todas las secuencias con pocas a que los b.

Ejemplo 4

Otro ejemplo de una lengua sin contexto es \ {el b^ del a^m del b^n {2n}: n \ GE 0, m \ GE 0 \} . Esto no es una lengua regular, pero es sin contexto pues puede ser generada por la gramática independiente del contexto siguiente: &rarr del
S del
; bSbb | UN &RARR DEL
A; aA | ε

Otros ejemplos

Las gramáticas independientes del contexto no son limitadas según lo dispuesto por matemático (" formal") idiomas. Por ejemplo, se ha sugerido que una clase de llamado poesía Venpa del Tamil es gobernada por una gramática independiente del contexto.

¡Derivaciones y árboles del sintaxis programa de análisis de LR -->

Hay dos maneras comunes de describir cómo una secuencia dada se puede derivar del símbolo de inicio de una gramática dada. La manera más simple es enumerar las cadenas consecutivas de símbolos, comenzando con el símbolo de inicio y terminando con la secuencia, y las reglas se han aplicado que. Si introducimos una estrategia tal como " substituir siempre el first" no terminal extremo izquierdo; entonces para las gramáticas independientes del contexto la lista de reglas aplicadas de la gramática está por sí mismo suficiente. Esto se llama la derivación extrema izquierda del de una secuencia. Por ejemplo, si tomamos la gramática siguiente:   del ;     del
;   &rarr del
(1) S; &RARR DEL

DE S + DE S (2) S; 1 &rarr del
(3) S; un

y el " de la secuencia; 1 + 1 + a" entonces una derivación izquierda de esta secuencia es la lista (1), (1), (2), (2), (3). La derivación de derecha del se define análogo como la lista que conseguimos si substituimos siempre el primer no terminal de derecha. En este caso ésta podía ser la lista (1), (3), (1), (2), (2).

La distinción entre la derivación extrema izquierda y la derivación de derecha es importante porque en la mayoría de los programas de análisis la transformación de la entrada es definida dando un pedazo de código para cada regla de la gramática se ejecute que siempre que la regla sea aplicada. Por lo tanto es importante saber si el programa de análisis determina una derivación extrema izquierda o de derecha porque éste determina la orden en la cual los pedazos de código serán ejecutados. Ver para los programas de análisis un LL del ejemplo y los programas de análisis de LR

Una derivación también impone en un cierto sentido una estructura jerárquica ante la secuencia se deriva que. Por ejemplo, si el " de la secuencia; 1 + 1 + a" se deriva según la derivación extrema izquierda:   del ;     del
;  
S→   del
de S+S (1);   →   del
de S+S+S (1);   →   del
de 1+S+S (2);   →   del
de 1+1+S (2);   → 1+1+a (3)

la estructura de la secuencia sería:

l {{{1} S + {1} S} S + {a} S} S donde {…} S indica una subsecuencia reconocida como perteneciendo al S. Esta jerarquía se puede también considerar como árbol:   del ;     del
;  

S /|\ / | \ / | \ S “+” S /|\ | / | \ | S “+” S “a” | | “1” “1”

Este árbol se llama un árbol del sintaxis concreto del (véase también el árbol de abstract syntax ) de la secuencia. En este caso las actuales derivaciones extremas izquierdas y de derecha definen el mismo árbol del sintaxis; sin embargo, hay otra derivación (extrema izquierda) del mismo   del de la secuencia;  
S→   del
de S + de S (1) x;   → 1 +   del
de S (2);   → 1 + &NBSP DEL

DE S + DE S (1);   → 1 + 1 +   del
de S (2);   → 1 + 1 + (3) un

y esto define el árbol siguiente del sintaxis:   del ;     del
;  

S /|\ / | \ / | \ S “+” S | /|\ | / | \ “1” S “+” S | | “1” “a”

Si, para ciertas secuencias en la lengua de la gramática, hay más de un árbol de análisis, después la gramática reputa una gramática ambigua . La ambigüedad es la característica de gramáticas algo que la lengua porque la lengua se deriva de la gramática tan; la ambigüedad no depende de lengua. Tales gramáticas son generalmente duras de analizar porque el programa de análisis no puede decidir siempre a qué regla de la gramática tiene que aplicar.

Formas normales

Cada gramática independiente del contexto que no genera la secuencia vacía se puede transformar en una en el cual ninguna regla tenga la secuencia vacía como regla del producto con el ε como un producto se llama un ε - producción. Si genera la secuencia vacía, será necesario incluir el S \ el rarr \ epsilon de la regla, pero no necesitan ser otro ε - regla. Cada gramática independiente del contexto sin ε - la producción tiene una gramática equivalente en la forma normal de Chomsky o la forma normal de Greibach. " Equivalent" aquí significa que las dos gramáticas generan la misma lengua.

Debido a la forma especialmente simple de reglas de producción en gramáticas de la forma normal de Chomsky, esta forma normal tiene implicaciones teóricas y prácticas. Por ejemplo, dado una gramática independiente del contexto, una puede utilizar la forma normal de Chomsky para construir un algoritmo del polinómico-tiempo que decida a si una secuencia dada está en la lengua representada por esa gramática o no (el algoritmo CYK).

Problemas de Undecidable

Aunque algunas operaciones en gramáticas independientes del contexto sean decidible debido a su energía limitada, CFGs tiene problemas undecidable interesantes. Uno del más simple y citado es el problema de decidir a si un CFG acepta la lengua de todas las secuencias. Una reducción se puede demostrar a este problema del problema undecidable bien conocido de determinar si una máquina de Turing acepta una entrada particular. La reducción utiliza el concepto de una historia, una secuencia del cómputo que describe un cómputo entero de una máquina de Turing. Podemos construir un CFG que genere todas las secuencias que no estén aceptando las historias del cómputo para una máquina particular de Turing en una entrada particular, y aceptará así todas las secuencias solamente si la máquina no acepta esa entrada.

Como consecuencia de esto, es también undecidable si dos CFGs describen la misma lengua, puesto que no podemos incluso decidir si un CFG es equivalente al CFG trivial que decide a la lengua de todas las secuencias.

Otro punto digno de mencionar es que el problema de determinar si una gramática sensible al contexto describe una lengua sin contexto es undecidable.

Extensiones

Una manera obvia de ampliar el formalismo de la gramática independiente del contexto es permitir que los nonterminals tengan discusiones, los valores cuyo se pasan adelante dentro de las reglas. Esto permite características de lenguaje natural tales como acuerdo y referencia, y analogons de programación del lenguaje tales como el uso y la definición correctos de identificadores, de ser expresado en una manera natural. podemos ahora expresar fácilmente eso en oraciones inglesas, el tema y el verbo debe convenir en gran número.

En de informática, los ejemplos de este acercamiento incluyen las gramáticas de dos niveles de las gramáticas puestas en un índice de las gramáticas de cualidad de las gramáticas de afijo y de Van Wijngaarden

Las extensiones similares existen en lingüística.

Otra extensión es permitir que los símbolos adicionales aparezcan en el lado de mano izquierda de reglas, obligando su uso. Esto produce el formalismo de las gramáticas sensibles al contexto

Usos lingüísticos

El Chomsky esperaba inicialmente superar las limitaciones de gramáticas independientes del contexto agregando las reglas de la transformación., aunque sus ejemplos específicos con respecto a la insuficiencia de CFGs en términos de su capacidad generativa débil fueran refutados más adelante. El Gerald Gazdar y el Geoffrey Pullum han sostenido que a pesar de algunas construcciones no-contexto-libres en de lenguaje natural (tal como dependencias Cruz-seriales en alemán suizo ), la gran mayoría de formas en de lenguaje natural es de hecho sin contexto.

  • Zenithic
  • Biecz
    Random links:Jazz vanguardista | Elemental | Sátiro del baile | & de Harold Melvin; las notas azules | Enero Wouters

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">