обнаружение неоднозначного БНФ - PullRequest
4 голосов
/ 14 сентября 2010

У меня есть задание исправить неоднозначную БНФ, но я полностью потерялся. Я знаю, что это не настоящий вопрос программирования, и я с удовольствием удалю его, если он не подходит для этих плат. Есть ли хорошие сайты, где я мог бы узнать больше о BNF? Тот, с которым я имею дело, кажется довольно простым, но я не могу найти ни примеров, ни хороших объяснений относительно БНФ. У меня был некоторый опыт обнаружения неоднозначных деревьев разбора и других видов грамматик, но я полностью потерян на этом.

Поскольку это школьное задание, я не уверен, что мне следует публиковать BNF, о котором идет речь, но если кто-нибудь знает хороший сайт, на который я мог бы взглянуть, чтобы лучше понять, как атаковать мой вопрос. Я просто не знаю, с чего начать.

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

Некоторый BNF, описывающий контекстно-свободную грамматику, также описывает конечный автомат (в данном случае Pushdown автоматы ).Вероятно, лучший способ сделать это - проверить конечный автомат.

В качестве отправной точки вы можете посмотреть, что конфликт находится внутри синтаксических анализаторов, которые используют такиеавтоматы .

0 голосов
/ 31 марта 2012

Если в правой части предложения есть два или более одинаковых нетерминала, это неоднозначно. Например: -> + | <факто>. Выражение с правой стороны может быть экспортировано различными способами в дереве, поэтому можно нарисовать разные деревья, и это неоднозначно.

...