Существует ли генератор синтаксического анализатора C#, который возвращает леса синтаксического анализа для неоднозначных операторов?
Я хотел бы изучить использование формальной языковой обработки в контексте естественных языков. Для этого я ищу генератор синтаксического анализатора, который был бы устойчив к неоднозначности в том смысле, что он не будет обозначать EBNF как недопустимый, когда его можно использовать для создания одной и той же строки из нескольких производств. Кроме того, стандартным способом обработки избыточности является возврат лесов разбора вместо деревьев разбора.
Я НЕ спрашиваю, какой инструмент лучше, но только если есть инструменты, которые можно получить для C#. И если есть, где я могу их найти.
Неважно, является ли инструмент открытым или закрытым.
Ответ будет вручен самому длинному списку уникальных (не упомянутых ранее) инструментов, которые удовлетворяют требуемым ограничениям на синтаксический анализатор, возвращаемый генератором синтаксического анализатора.
Пожалуйста, помогите мне исследовать разбирать леса.
1 ответ
Вы можете найти реализацию алгоритма Эрли, которая делает то, что вы хотите, например, https://github.com/coonsta/earley
Мой собственный движок на естественном языке (nlp.abodit.com) основан на алгоритме, похожем на алгоритм Эрли.