Gramáticas Libres Regulares vs Contexto


Estoy estudiando para mi prueba de lenguajes de computación, y hay una idea que estoy teniendo problemas para envolver mi cabeza.

Entendí que las gramáticas regulares son más simples y no pueden contener ambigüedad, pero no pueden hacer muchas tareas que se requieren para los lenguajes de programación. También entendí que las gramáticas libres de contexto permiten la ambigüedad, pero permiten algunas cosas necesarias para los lenguajes de programación (como los palíndromos).

Lo que estoy teniendo problemas con está entendiendo cómo puedo derivar todo lo anterior sabiendo que los no terminales de gramática regular pueden mapear a un terminal o un no terminal seguido de un terminal o que un no terminal libre de contexto mapea a cualquier combinación de terminales y no terminales.

¿Puede alguien ayudarme a armar todo esto?

Author: nbro, 2009-02-18

8 answers

La gramática regular es lineal derecha o izquierda, mientras que la gramática libre de contexto es básicamente cualquier combinación de terminales y no terminales. Por lo tanto, puede ver que la gramática regular es un subconjunto de la gramática libre de contexto.

Así que para un palíndromo, por ejemplo, es de la forma,

S->ABA
A->something
B->something

Se puede ver claramente que los palíndromos no se pueden expresar en la gramática regular, ya que necesita ser lineal a la derecha o a la izquierda y, como tal, no puede tener un no terminal en ambos lados.

Desde las gramáticas regulares no son ambiguas, solo hay una regla de producción para una gramática no terminal dada, mientras que puede haber más de una en el caso de una gramática libre de contexto.

 59
Author: Sujoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-02 13:06:56

Creo que lo que quieres pensar son los varios lemmata bombeo. Un lenguaje regular puede ser reconocido por un autómata finito. Un lenguaje libre de contexto requiere una pila, y un lenguaje sensible al contexto requiere dos pilas (lo que equivale a decir que requiere una máquina de Turing completa.)

Entonces, si pensamos en el lema de bombeo para las lenguas regulares , lo que dice, esencialmente, es que cualquier lengua regular se puede dividir en tres partes, x , y, and z, where all instances of the language are in xy*z (where * is Kleene repetition, ie, 0 or more copies of y.) Básicamente tienes un "no terminal" que se puede expandir.

Ahora, ¿qué pasa con los lenguajes libres de contexto? Hay un análogo lema de bombeo para lenguajes libres de contexto que rompe las cadenas en el lenguaje en cinco partes, uvxyz , y donde todas las instancias del lenguaje están en uvixyiz, para i ≥ 0. Ahora, tienes dos "no terminales" que se pueden replicar, o bombear, siempre y cuando tengas el mismo número .

 50
Author: Charlie Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-02 08:10:06

La diferencia entre gramática regular y libre de contexto: (N, Σ, P, S) : terminales, no terminales, producciones, estado inicial Símbolos terminales

● símbolos elementales del lenguaje definidos por una gramática formal

● abc

Símbolos no terminales (o variables sintácticas)

● sustituido por grupos de símbolos terminales de acuerdo con las normas de producción

● ABC

Gramática regular: derecha o izquierda gramática regular gramática regular correcta, todas las reglas obedecen a las formas

  1. B → a donde B es un no terminal en N y a es un terminal en Σ
  2. B → aC donde B y C están en N y a está en Σ
  3. B → ε donde B está en N y ε denota la cadena vacía, es decir, la cadena de longitud 0

Izquierda gramática regular, todas las reglas obedecen las formas

  1. A → a donde A es un no terminal en N y a es un terminal en Σ
  2. A → Ba donde A y B están en N y a está en Σ
  3. A → ε donde A es en N y ε es la cadena vacía

Gramática libre de contexto (CFG)

○ gramática formal en la que cada regla de producción es de la forma V → w

○ V es un único símbolo no terminal

○ w es una cadena de terminales y / o no terminales (w puede estar vacío)

 8
Author: stringRay2014,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-13 19:29:42

Expresiones regulares

  • Base del análisis léxico
  • Representan idiomas regulares

Gramáticas libres de Contexto

  • Base del análisis
  • Representar construcciones del lenguaje

introduzca la descripción de la imagen aquí

 5
Author: Ahmed Salem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-16 16:58:49

Una gramática está libre de contexto si todas las reglas de producción tienen la forma: A (es decir, el lado izquierdo de una regla solo puede ser una sola variable; el lado derecho no está restringido y puede ser cualquier secuencia de terminales y variables). Podemos definir una gramática como una 4-tupla donde V es un conjunto finito (variables), _ es un conjunto finito (terminales), S es la variable de inicio, y R es un conjunto finito de reglas, cada una de las cuales es una asignación V
la gramática regular es lineal a la derecha o a la izquierda, mientras que la gramática libre de contexto es básicamente cualquier combinación de terminales y no terminales. por lo tanto, podemos decir que la gramática regular es un subconjunto de la gramática libre de contexto. Después de estas propiedades podemos decir que Context Free Languages set también contiene Regular Languages set

 3
Author: Wafiullah NAeemzi Afghan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-30 15:28:41

Gramática regular: - la gramática que contiene la producción de la siguiente manera es RG:

V->TV or VT
V->T

Donde V = variable y T = terminal

RG puede ser Gramática Lineal Izquierda o Gramática Lineal Derecha, pero no Gramática lineal Media.

Como sabemos todos los RG son Gramática Lineal, pero solo la Gramática Lineal Izquierda o Lineal Derecha son RG.

Una gramática regular puede ser ambigua.

S->aA|aB
A->a
B->a

Gramática ambigua: - para una cadena x existen más de un LMD o Más de RMD o Más que un árbol de Análisis o Un LMD y un RMD, pero ambos producen un árbol de Análisis diferente.

                S                   S

              /   \               /   \
             a     A             a     B
                    \                   \
                     a                   a

Esta gramática es una gramática ambigua porque dos árboles de análisis.

CFG: - Una gramática que se dice que es CFG si su Producción está en forma:

   V->@   where @ belongs to (V+T)*

DCFL: - como sabemos todos DCFL son LL(1) Gramática y todos LL(1) es LR(1) por lo que nunca es ambiguo. así que DCFG nunca es ambiguo.

También sabemos que todos los RL son DCFL, por lo que RL nunca será ambiguo. Tenga en cuenta que RG puede ser ambiguo, pero RL no.

CFL: CFl Puede o no ambiguo.

Nota: RL nunca será inherentemente ambiguo.

 3
Author: Dean Meehan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-03 00:20:18

Básicamente la gramática regular es un subconjunto de la gramática libre de contexto,pero no podemos decir que toda gramática libre de contexto sea una gramática regular. Principalmente la gramática libre de contexto es ambigua y la gramática regular puede ser ambigua.

 -1
Author: Babita Mehra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-03 14:51:22

Un grammer regular nunca es ambiguo porque es lineal a la izquierda o lineal a la derecha, por lo que no podemos hacer dos árboles de decisión para grammer regular, por lo que siempre es inequívoco.pero othert que gramática regular todos son puede o no puede ser regular

 -4
Author: dinesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-21 09:46:46