Какие произведения рассматриваются в LR(1) прогноз?

В настоящее время я рассматриваю два примера расчета замыкания с использованием инструмента по адресу http://jsmachines.sourceforge.net/machines/lr1.html

Пример 1

S -> A c
A -> b B
B -> A b

Здесь в исходное состояние заканчивается закрытием:

[S -> .A c, $]; [A -> .b B, c]}

Пример 2

S -> A B
A -> a
B -> b
B -> ''

Расчетное закрытие первого шага:

{[S -> .A B, $]; [A -> .a, b/$]}

В примере 1, почему следование b из правила 3 ​​не включено в обзор? В случае 2, мы следуем B, чтобы выяснить, что $ является частью просмотра, так есть ли какая-то особая причина, чтобы не учитывать все правила в случае 1?

1 ответ

Решение

При выполнении замыкания с ". A α" мы используем FIRST(α) в качестве предварительного просмотра и включаем только (родительский) прогноз, только если ε ∈ FIRST(α). В примере 1 ε ∉ FIRST(c), поэтому прогноз - c. В примере 2 ε ∈ FIRST(B), поэтому мы добавляем в него содержащую заглядывание (в данном случае $).

СЛЕДУЮЩЕЕ никогда не актуально.

Другие вопросы по тегам