#parsing #grammar #text-parsing #left-recursion
#синтаксический анализ #грамматика #синтаксический анализ текста #левая рекурсия
Вопрос:
Я готовлюсь к завтрашнему экзамену и пересматриваю результаты за предыдущие годы.
В тесте была грамматика.
Expression -> Foo " " Bar "end"
Foo -> [a-z0-9] | Expression
Bar -> Expression Foo | a*b*c
Я пытался и потратил часы на изучение того, как это сделать, но не могу понять.
Я взглянул на замену вещей на epsilion и тому подобное, но не чувствую уверенности.
Я думаю, что мне нужно создать Foo’и Bar’, а затем просто добавить правила epsilon, но я не уверен.
Не мог бы кто-нибудь, пожалуйста, показать мне (просто) _как изменить его на грамматику с поддержкой LL (1)
Заранее спасибо
Ответ №1:
Насколько я помню грамматику LL-1, смотрите вперед на 1 символ. Ваша цель — устранить двусмысленность и левую рекурсию. Все, что вам нужно — использовать левую факторизацию. Сначала взгляните на это.