Вам просто нужно %glr-parser
, чтобы получить анализатор GLR.Обратите внимание, что парсеры GLR могут ВСЕГДА иметь конфликты (сдвиг / уменьшение или уменьшение / уменьшение), просто сгенерированный парсер будет пытаться использовать обе альтернативы и унифицировать результат.
Если вы хотите закрыть сообщения о конфликтахВы можете использовать %expect
и %expect-rr
.Однако просто слепое использование синтаксического анализатора GLR, когда вы не понимаете, в чем заключаются все конфликты, опасно - результирующий синтаксический анализатор может занять экспоненциально много времени, чтобы проанализировать некоторые входные данные, если вы неосторожны, или может привести к ошибкам во время выполнения.