Herramientas de usuario

Herramientas del sitio


es:manual:items:patron:gramaticas

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
Última revisiónAmbos lados, revisión siguiente
es:manual:items:patron:gramaticas [2021/12/08 11:00] rootes:manual:items:patron:gramaticas [2021/12/08 12:09] root
Línea 1: Línea 1:
-===== patrones de evaluación de gramáticas =====+===== Patrones de evaluación de gramáticas =====
  
-Para algunas asignaturas, tales como //Teoria de Autómatas y Lenguajes Formales // o //Procesadores de Lenguajes//, se pueden plantear preguntas cuya respuesta es una gramática de contexto libbre o regular. Por ejemplo:+Para algunas asignaturas, tales como //Teoria de Autómatas y Lenguajes Formales // o //Procesadores de Lenguajes//, se pueden plantear preguntas cuya respuesta es una gramática de contexto libbre (o regular). Por ejemplo:
  
 {{ es:manual:items:patron:item-gram.png?400 }} {{ es:manual:items:patron:item-gram.png?400 }}
Línea 24: Línea 24:
 El profesor debe proporcionar una gramática que servirá como patron de comparación; sin embargo para reconocer si la respuesta de un alumno es correcta, no es suficiente por tanto una correspondencia sencilla entre el patrón y la respuesta. Es necesario comprobar mediante un procedimiento que los lenguajes generados por ambas gramaticas son equivalentes. En el caso general se ha demostrado que la equivalencia de gramáticas es una cuestión indecidible, es decir, que en el caso general no existe ningún algoritmo que nos diga si una gramática es o no equivalente a otra. Sin embargo, para los casos en llos que la gramática tiene pocas reglas, se puede resolver el problema mediante fuerza bruta. Para ello se generan todas las posibles cadenas del lenguaje a partir de la gramática de la respuesta hasta una cierta longitud y profundidad del árbol de derivaciones; y se comprueba que todas ellas están incluidas en el conjunto de cadenas generadas por la gramatica propuesta como patrón hasta con una longitud maxima y profundidad del árbol superior; y viceversa.  El profesor debe proporcionar una gramática que servirá como patron de comparación; sin embargo para reconocer si la respuesta de un alumno es correcta, no es suficiente por tanto una correspondencia sencilla entre el patrón y la respuesta. Es necesario comprobar mediante un procedimiento que los lenguajes generados por ambas gramaticas son equivalentes. En el caso general se ha demostrado que la equivalencia de gramáticas es una cuestión indecidible, es decir, que en el caso general no existe ningún algoritmo que nos diga si una gramática es o no equivalente a otra. Sin embargo, para los casos en llos que la gramática tiene pocas reglas, se puede resolver el problema mediante fuerza bruta. Para ello se generan todas las posibles cadenas del lenguaje a partir de la gramática de la respuesta hasta una cierta longitud y profundidad del árbol de derivaciones; y se comprueba que todas ellas están incluidas en el conjunto de cadenas generadas por la gramatica propuesta como patrón hasta con una longitud maxima y profundidad del árbol superior; y viceversa. 
  
-En caso de que las gramáticas no sean equivalentes, durante el proceso de búsqueda de la equivalencia, el plugin localiza las posibles cadenas de caracteres que diferencian a ambas gramáticas. El plugin tambien comprueba si la gramatica propuesta es o no ambigua.+En caso de que las gramáticas no sean equivalentes, durante el proceso de búsqueda de la equivalencia, el plugin localiza las posibles cadenas de caracteres que diferencian a ambas gramáticas. 
  
  
Línea 37: Línea 37:
 {{ es:manual:items:patron:item-gram-refuerzo.png?400 }} {{ es:manual:items:patron:item-gram-refuerzo.png?400 }}
  
 +El plugin tambien puede comprobar si la gramatica propuesta es o no ambigua, por ejemplo para responder a preguntas como:
  
 +{{ es:manual:items:patron:item-gram-ambigua.png?400 }}
  
 +En donde el conjunto de patrones ahora es:
 +
 +{{ es:manual:items:patron:item-gram-ambigua-patrones.png?400 }}
 +
 +En este caso el patron de respuesta correcto requiere que la gramatica solución no sea ambigua. Si lo fuera, este patrón no encajaría y se intentaría encajar con alguno de los siguientes. Suponiendo que la gramatica esta bien escrita desde el pnto de vista sintáctico y es correcta, si la gramatica es equivalente pero ambigua, encajaría con el cuarto patrón, es decir con el patón etiquetado como ''@GramaticaEquivalente'' que ahora corresponde a un patron incorrecto. A este patrón incorrecto se le puede asociar un refuerzo para indicar al alumno alguna de as cadenas que hacen que la gramática sea ambigua.
 +
 +{{ es:manual:items:patron:item-gram-ambigua-refuerzo.png?400 }}
 +
 +Finalmente, el plugin tambien permite solicitar gramáticas que cumplan la condición LL(1).
 +
 +{{ es:manual:items:patron:item-gram-ll1.png?400 }}
 +
 +En este caso los patrones se comporta de manera similar al caso de las gramáticas ambiguas. 
 +
 +{{ es:manual:items:patron:item-gram-ll1-patrones.png?400 }}
 +
 +Nótese que no es necesario incliur el patrón de ''@GramaticaEquivalenteNoAmbigua'', (aunque se podría incluir), ya que toda gramatica LL1 tiene que ser no ambigua. Nótese también que no es ni siquiera necesario proporcionar una gramática LL(1) como patrón, ya que el plugin se encarga de verificar que la gramática de la respuesta es equivalemte a la gramática del aptrón y que además cumple la condición LL(1). Sin embargo si habrá que proporcionar una gramática LL(1) como ejemplo.
 +
 +{{ es:manual:items:patron:item-gram-ll1-ejemplo.png?400 }}
 +
 +En el plugin de los patrones de gramáticas no es necesario repetir la gramatica en cada uno de los patrones, basta con incluir la gramatica en el primero de ellos. Por otra parte, los controles de ignorar mayusculas y minúsculas, espacios en blanco, etc. no son operativos.
 +
 +==== Sintaxis de las gramáticas ====
 +Tanto para proporcionar el patrón como la respuesta del alumno, se deben seguir unas normas sintacticas para expresar la gramática de contexto libre. Solo es necesario proporcionar el conjunto de replas. Los simbolos no terminales se escriben mediante letras mayusculas de la A a la Z (excluyendo la Ñ), o bien letras mayusculas seguidas de un apóstrofe, tales como A' , B' ... Z', que funcionan como no terminales distintos. El primer símbolo no-terminal se tomará como axioma de la gramática. 
 +
 +Los simbolos terminales corresponden a letras minúsculas de la ''a'' a la ''z'', o bien cualquier otro caracter Ascii excluyendo las letras mayusculas, los apostrofos, comillas y el cracter ''$'' que tienme un significado especial. No es necesario proporcionar una gramática ampliada, pero si se hace, debe usarse el símbolo ''$'' como símbolo tgerminados de cadenas.
 +
 +Las rreglas se escriben cada una en un línea, separando el antecedente del consecuente mediante una fecha construida mediante los caracteres ''->''. Los espacios en blanco no son significativos. La cadena vacía <html>&epsilon;</html> se puede escribir mediante la palabra reservada ''EPSILON'', o bien dejando el consecuente vacío.
 +
 +El siguiente es un ejemplo de gramática válido
 +
 +   A -> [B]
 +   B -> aB'
 +   B ->
 +   B'-> ;aB'
 +   B'->
es/manual/items/patron/gramaticas.txt · Última modificación: 2023/03/24 16:31 por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki