Заставить менгира найти все альтернативы?

Я хотел бы изменить поведение вывода менгира следующим образом: я хочу, чтобы он посмотрел все грамматические альтернативы, если он найдет их, и поместил их в список и вернул мне эту неоднозначную интерпретацию. Это не должно уменьшать конфликты, просто храните их.

В исходном коде менгира мне кажется, что я должен смотреть в "Engine.ml". Результирующий синтаксически определенный токен входит в элемент типа варианта "Принято v" как состояние контрольной точки грамматического автомата. Этот контент обнаруживается функцией "accept env prod" ранее, которая является частью набора рекурсивных функций, которые изменяют состояния.

У вас есть совет, как я мог бы изменить эти функции, чтобы поместить все возможные результаты в список и действовать так, как будто ничего не произошло? Или вы думаете, что это все равно не сработает?

Благодарю.

1 ответ

Решение

То, что вы ищете, это генератор синтаксического анализатора GLR (G для обобщенного). Менгир не такой инструмент, и я сомневаюсь, что вы могли бы легко изменить его, чтобы сделать то, что вы хотите.

Однако есть другой инструмент, который делает именно то, что вы хотите: dypgen.

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