Open IlyaMuravjov opened 1 week ago
В данный момент времени для алгоритма Хеллингса можно ввести любую контекстно-свободную грамматику, которая для работы алгоритма будет автоматически переведена в НФХ, в которой и будет показываться пользователю (как будто так немного нагляднее?)
С большой НФХ не удобно работать человеку, сложно воспринимать много вспомогательных продукций.
Например, у меня была вот такая грамматика:
S -> a b
Мне её зачем-то удлиняют до:
S -> N1 N2
N1 -> a
N2 -> b
И заставляют думать про какие-то N1
и N2
, хотя можно было бы научить алгоритм Хеллингса работать с исходной продукцией S -> a b
, т.е. продукцией вида <нетерминал> -> <произвольный символ> <произвольный символ>
.
Другими словами, я предлагаю не просто следовать определению 7, а учесть замечание 2.
Проблема
Сейчас из продукций с двумя символами в правой части поддерживаются только продукции вида
<нетерминал> -> <нетерминал> <нетерминал>
, из-за чего для каждого терминала приходится создавать вспомогательный соответствующий нетерминал и продукцию<нетерминал> -> <терминал>
, что затрудняет восприятие КС-грамматик человекомРешение
Поддержать продукции вида
<нетерминал> -> <произвольный символ> <произвольный символ>