Вопрос по нетерминальному анализу снизу вверх - PullRequest
1 голос
/ 12 апреля 2020

Если DFA останавливается в состоянии, в котором все элементы говорят о смещении; но после точки ни один из элементов не соответствует следующему входному токену. Мы исследуем нетерминалы после точки или нет? Или мы немедленно отклоняем это?

Example

Предположим, что в этом примере DFA завершил работу в этом состоянии: я немедленно отклонил? Или я исследую нетерминалы после точки? И посмотрите, смогут ли следующие символы в их первом / последующем наборе они исчезнуть?

1 Ответ

1 голос
/ 12 апреля 2020

Если вы находитесь в состоянии синтаксического анализатора, где вы должны сдвинуться, но ни один из элементов в состоянии не имеет точку прямо перед текущим терминалом, это означает, что терминал не может отображаться здесь легально, и у вас есть ошибка разбора. Здесь нет необходимости исследовать нетерминалы после точек, поскольку при построении состояния синтаксического анализатора вы бы уже расширили эти нетерминалы, чтобы увидеть, не связано ли какое-либо из них с производством, которое начинается с данного нетерминала.

( Я не уверен, что состояние парсера, которое вы здесь описываете, могло бы действительно существовать, если нетерминал T. Если нетерминал T, то для каждого произведения вида T → ω вы также увидите T → · ω как одно из производство изделий в гос.)

...