Hay muchas definiciones en línea sobre lo que es una gramática libre de contexto, pero nada de lo que encuentro satisface mi problema principal:
¿De qué contexto está libre?
Para investigar, busqué en Google "gramática sensible al contexto" pero todavía no pude encontrar de qué se trataba el "contexto".
¿Alguien puede explicar a qué context
se refiere el término en estos nombres?
terminology
context-free
formal-grammars
CodyBugstein
fuente
fuente
override
puede ser un nombre de variable o una palabra clave, dependiendo de dónde se use (es decir, su contexto). Si se usa después de una declaración de método, es una palabra clave. De lo contrario no lo es. Este es un ejemplo de una gramática sensible al contexto.Respuestas:
Tienes razón, siempre hay un contexto en algún sentido. No creo que puedas entender qué significa "contexto" en "sin contexto" sin entender una producción.
Una producción es una regla de sustitución. Dice que, para generar cadenas dentro del lenguaje, puede sustituir lo que está a la izquierda por lo que está a la derecha:
Esto significa que la secuencia abstracta A puede ser reemplazada por el carácter "x" seguido por el carácter "y". También puedes tener producciones más complejas:
Esto significa que el carácter "z" seguido de la secuencia abstracta A puede ser reemplazado por los caracteres "x" e "y".
Una producción sin contexto simplemente significa que solo hay una cosa en el lado izquierdo. El primer ejemplo no tiene contexto, porque A puede ser reemplazado por "x" e "y" sin importar lo que ocurra antes o después. Sin embargo, en el segundo ejemplo, el carácter "z" tiene que aparecer antes de la A, y luego la combinación se puede reemplazar por "x" e "y", por lo que hay algún contexto involucrado.
Una gramática libre de contexto es solo una gramática con solo producciones libres de contexto.
El segundo ejemplo es en realidad un ejemplo de una producción sin restricciones. Hay otra categoría que está entre libre de contexto y sin restricciones llamada "sensible al contexto". Un ejemplo de producción sensible al contexto es:
La diferencia es que lo que viene antes de A (y después) en el lado izquierdo debe conservarse a la derecha. Esto efectivamente significa que solo A está sustituido, pero solo puede ser sustituido en el contexto apropiado.
fuente
zA -> zxy
: A todavía se reemplaza por xy, pero solo después de z.Considere la regla y digamos que tiene una forma entonces A reducir a β no depende de qué son α y δ. De esta forma, no tiene contexto, ya que no depende del contexto circundante.
fuente