2012-01-11 2 views
1

Почему грамматика со следующим правилом приводит к конфликту?Как маркеры могут привести к конфликтам?

Statement | IF {...} LP BoolExp RP %prec IFX Statement { ... } 
       |  ... 

Терминал IFX предназначен для стандартного трюка для разрешения перекручивания другого. Я думаю, что это как-то связано. Удаление первой маркировки устраняет конфликт.

Отображается сообщение бизон выходов составляет:

предупреждение: правило бесполезно в парсер из-за конфликтов: $ @ 2:/* пусто */

+0

Я надеюсь, что это имеет отношение и полезно: http://lists.gnu.org/archive/html/help-bison/2001-10/msg00011.html – sarnold

+0

@sarnold Спасибо, это очень помогло. – Artium

ответ

0

(Answered in the comments)

@sarnold написал:

Надеюсь, это актуально и полезно: http://lists.gnu.org/archive/html/help-bison/2001-10/msg00011.html/

Однако SO обесценивает ссылки только на веб-ссылки. Поэтому я резюмирую здесь. Ссылка на список ответов под названием «Смещение уменьшения ошибок из-за встроенных действий» by @Hans Aberg. В общих чертах это предполагает:

Лучший способ обойти эту проблему, вероятно, собрать семантическую информации о том, что А и Б производят, а затем использовать его при appyling C или D.

Смежные вопросы