Ошибка неоднозначности при рендеринге дерева разбора

В Rascal, при рендеринге дерева разбора на неоднозначной грамматике, почему я иногда получаю сообщение об ошибке с указанием "Неоднозначность" в каком-то месте, а не Rascal просто рендеринг леса разбора и показ неоднозначности?

Я всегда просто звоню render(renderParsetree(parse(SomeSymbol, SomeLocation))); но я не имею ни малейшего представления о том, когда это просто отображает лес синтаксического анализа и когда оно выдает сообщение об ошибке двусмысленности. По моему мнению, леса разбора отображают неоднозначность намного яснее, и я хотел бы знать, существует ли способ показать это вместо этого, когда Rascal представляет сообщение об ошибке.

Редактировать: не просто рендеринг дерева разбора, но даже "Доктор Двусмысленность '(diagnose) в этих случаях происходит сбой с неоднозначностью, поэтому найти причину неоднозначности тоже невозможно.

1 ответ

Решение

Я получил следующий ответ от jurgenv по электронной почте: по недавнему изменению вам нужно установить allowAmbiguity=true при звонке parse допустить двусмысленность. Поведение этого метода было изменено, чтобы синтаксический анализатор занимал очень много времени, чтобы обработать файл, который случайно очень неоднозначен и позволяет быстрее обнаружить неоднозначность.

Другие вопросы по тегам