¿Qué se entiende realmente por contexto libre en el término gramática libre de contexto?

29

He estado estudiando compiladores durante un tiempo, y he estado buscando lo que se entiende por "contexto" en gramática y lo que significa que la gramática esté "libre de contexto", pero sin resultado.

Entonces, ¿alguien puede ayudar con esto?

Shady Atef
fuente
77
¿Qué quieres decir con "realmente"? ¿Qué explicaciones has leído y qué no entiendes? IIRC, cada libro de texto medio decente sobre el tema explicará lo que significan.
Raphael
2
Aquí hay un ejemplo relatable. Considere la palabra "leer". Es una sola palabra que tiene dos significados completamente diferentes. Uno es el tiempo presente "leer", el otro es el tiempo pasado "yo leo". Si vio la palabra "leer" en un texto, no puede desambiguar cuál de los dos significados representa, sin mirar el contexto. Por lo tanto, el inglés es sensible al contexto, porque no puede analizar cada token (palabra) sin considerarlo en contexto. Una gramática sensible al contexto es aquella en la que el significado de cada token es inequívocamente deducible del token único que lo representa.
Alexander - Restablece a Mónica el

Respuestas:

30

El contexto puede explicarse con respecto a las reglas de producción permitidas para diferentes gramáticas en la jerarquía de Chomsky.

Si considera las gramáticas libres de contexto, sus reglas de producción tienen la siguiente forma:

Aα

Por lo tanto, puede observar que la parte izquierda de este tipo de reglas se compone de un solo símbolo no terminal; así, la sustitución del símbolo no terminal se lleva a cabo sin considerar su "contexto", es decir, los otros símbolos que lo rodean.

Por otro lado, si considera las reglas de producción de las gramáticas sensibles al contexto, tienen la siguiente forma:

βAγβαγ

Aαβγ

βγ

Puede encontrar más detalles en esta respuesta sobre matemáticas y en esta respuesta sobre ingeniería de software.

PieCot
fuente
Gracias por la respuesta. Pero lo extraño para mí es que se hizo una pregunta similar sobre matemáticas SE.
Shady Atef
1
βγ
1
@Frozn AFAIK la que se da aquí es la definición estándar de acuerdo con la jerarquía de Chmosky. Claro, hay gramáticas más poderosas que sensibles al contexto que permiten cualquier tipo de producción, pero las gramáticas estándar sensibles al contexto no lo hacen.
Bakuriu
2
@Frozn: Bakariu tiene razón, aquí estamos hablando de gramáticas definidas según la jerarquía de Chomsky, que se basa en condiciones cada vez más restrictivas en las reglas de producción. En particular, las gramáticas libres de contexto son gramáticas de tipo 2, mientras que las sensibles al contexto son de tipo 1. Sin embargo, las gramáticas de tipo 0 tienen reglas de producción que no están limitadas por ninguna restricción y, por lo tanto, se denominan sistemas de reescritura sin restricciones. Aquí puede encontrar una breve descripción de la jerarquía de Chomsky con algunos ejemplos.
PieCot
βAγδ|βAγ||δ|
17

AthingsstuffAmore-stuffthingsExprx:=y+zf(y+z)return y+z

David Richerby
fuente
4

Hablando genéricamente, incluso los idiomas regulares pueden tener dependencias de contexto, lo que significa que puede determinar, hasta cierto punto, de qué manera pueden aparecer símbolos en la vecindad de otros símbolos en una cadena que pertenece a ese idioma.

Lo que es específico de las gramáticas libres de contexto es que cuando hay múltiples formas de sustituir un símbolo no terminal, aplicando diferentes reglas con el mismo no terminal en el lado derecho, la elección de qué regla aplicar nunca depende de qué está sucediendo alrededor de este símbolo durante el proceso de derivación.

Puede pensar en ellos como lenguajes de derivación sin contexto, lenguajes sin contexto para abreviar.

André Souza Lemos
fuente