Указание Bison / Yacc переключаться, а не сокращать для разрешения конфликта

StackOverflow https://stackoverflow.com/questions/1851423

Вопрос

У меня есть ситуация, когда существует правило с конфликтом сдвига / уменьшения, которое я понимаю.Я хочу, чтобы правило никогда не сокращалось до последнего возможного момента (конец строки).Поэтому я хотел бы сказать, что всегда меняйся.Как мне это сделать?

Это было полезно?

Решение

Как отмечает Крейг, когда происходит сдвиг, уменьшающий конфликт, бизон делает сдвиг.Если предупреждение об этом вас беспокоит, вы можете использовать директиву %expect от bison, чтобы указать ожидаемое количество конфликтов уменьшения сдвига.Таким образом, он будет молчать, если это единственный конфликт, но если возникнут дополнительные конфликты, предупреждение вернется.

Другие советы

По умолчанию Bison переключается при возникновении конфликта shift / reduce.Вы можете использовать объявления приоритета, чтобы изменить поведение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top