3

Насколько я понял, FOLLOW-Set должен сказать мне в первый возможный момент, если во входном потоке есть ошибка. Это правильно?LL-1 Parsers: Действительно ли нужен FOLLOW-Set?

Потому что в противном случае мне интересно, для чего вам это действительно нужно. Рассмотрим вы синтаксический анализатор имеет нетерминальный на вершине стека (в нашем классе мы использовали стек в качестве абстракции для LL-Парсеры)

т.е.

[TOP] X...[BOTTOM] 

Х - пусть это будет не -терминал - должен быть заменен на следующем шаге, так как он находится в верхней части стека. Поэтому анализатор задает таблицу синтаксического анализа, что вывод использовать для X. Рассмотрим вход

+ b 

Где + и b являются оба терминала.

Предположим, что X имеет "" т. Е. Пустую строку в ее FIRST-наборе. И он имеет NO + в своем FIRST-наборе.

Насколько я вижу в этой ситуации, анализатор может просто проверить, не находится в первом наборе X нет +, а затем использовать вывод, который позволяет X растворяться в "" т.е. пустой строки, поскольку она является единственной так как анализатор, возможно, может продолжить синтаксический анализ ввода без возникновения ошибки. Если входной поток недействителен, синтаксический анализатор все равно узнает его в какой-то момент позже. Я понимаю, что набор FOLLOW может помочь здесь сразу определить, может ли синтаксический разбор продолжаться без ошибки или нет.

Мой вопрос - это действительно единственная роль, которую играет FOLLOW?

Надеюсь, мой вопрос принадлежит здесь - извините, если нет. Также не стесняйтесь запрашивать разъяснения, если что-то неясно.

Вы заранее заблаговременно

ответ

1

Вы правы в этом. Парсер мог в конечном итоге просто продолжить синтаксический анализ и в конечном итоге найти конфликт по-другому. Кроме того, набор FOLLOW может быть очень удобным в рассуждениях о грамматике. Не парсером, а людьми, которые строят грамматику. Например, если вы обнаружите, что существует любой конфликт FIRST/FIRST или FIRST/FOLLOW, вы сделали неоднозначную грамматику и можете захотеть ее пересмотреть.

Смежные вопросы