Estoy tratando de aprender YACC y tengo algunos problemas para descifrar los mensajes de advertencia que me está dando. Aquí es parte de mi archivo:Las reglas de YACC no se están reduciendo
define_character: WORD IS STRING COLOR
{
printf("%s's full name is %s and thier color is %s", $1, $3, $4);
};
dialog: WORD COLON STRING
{
printf("%s says %s", $1, $3);
};
change_scene: SCENE SETSCENE WORD
{
printf("%s is the new scene", $3);
};
Las advertencias que da mi son:
2 rules never reduced
2 useless nonterminals and 2 useless rules
warning: useless nonterminal: dialog
warning: useless nonterminal: change_scene
warning: useless rule: dialog: WORD SEMICOLON STRING
warning: useless rule: change_scene: SCENE SETSCENE WORD
¿cómo puedo solucionar esto? Intenté buscar y encontré personas que tienen el error debido a conflictos de cambio/reducción. Parece que YACC por lo general lo agrega al resultado de advertencia si hay alguno, pero solo para asegurarse de que traté de eliminar WORD de change_scene para que no buscara los mismos tokens que los otros y todavía no reduce . Puedo probar todas las reglas porque el que está en la parte superior es el que funciona. ¿Me falta algo de sintaxis al final de la primera regla que está causando problemas con el resto de ellos?
Gracias, creo que lo tengo arreglado ahora. Todos los ejemplos que he visto nunca realmente te mostraron cómo manejar más de una acción. Tengo el libro de O'Reilly y estoy tratando de construir mi analizador mientras lo paso. Supongo que debería haber leído más. Estoy haciendo un intérprete para una novela visual. Lo arreglé poniendo una declaración de comandos en la parte superior con la lista de comandos separados por |. – John