Заставить менгира найти все альтернативы?
Я хотел бы изменить поведение вывода менгира следующим образом: я хочу, чтобы он посмотрел все грамматические альтернативы, если он найдет их, и поместил их в список и вернул мне эту неоднозначную интерпретацию. Это не должно уменьшать конфликты, просто храните их.
В исходном коде менгира мне кажется, что я должен смотреть в "Engine.ml". Результирующий синтаксически определенный токен входит в элемент типа варианта "Принято v" как состояние контрольной точки грамматического автомата. Этот контент обнаруживается функцией "accept env prod" ранее, которая является частью набора рекурсивных функций, которые изменяют состояния.
У вас есть совет, как я мог бы изменить эти функции, чтобы поместить все возможные результаты в список и действовать так, как будто ничего не произошло? Или вы думаете, что это все равно не сработает?
Благодарю.
1 ответ
То, что вы ищете, это генератор синтаксического анализатора GLR (G для обобщенного). Менгир не такой инструмент, и я сомневаюсь, что вы могли бы легко изменить его, чтобы сделать то, что вы хотите.
Однако есть другой инструмент, который делает именно то, что вы хотите: dypgen.