Я считаю, что проблема в том, что yacc предполагает, что левая сторона самого первого производства является начальным символом.В этом случае это означает, что, поскольку у вас есть
define_character: WORD IS STRING COLOR
, yacc считает, что define_character
является начальным символом.У вас есть два других производства, а именно:
dialog: WORD COLON STRING
и
change_scene: SCENE SETSCENE WORD
Однако обратите внимание, что нет никакого способа получить dialog
или change_scene
из define_character
.Следовательно, yacc говорит вам, что у вас есть два бесполезных нетерминала, а именно эти два, поскольку они никогда не могут быть получены.Ошибки в двух бесполезных продуктах возникают из-за того, что оба из вышеупомянутых продуктов не могут быть запущены парсером.
Я не уверен, что понимаю, что вы пытаетесь сделать с этим кодом, но чтобыисправить это вам нужно как-то сделать так, чтобы эти нетерминалы были доступны.Можете ли вы рассказать, что именно вы пытаетесь достичь с помощью yacc?