Какие произведения рассматриваются в 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), поэтому мы добавляем в него содержащую заглядывание (в данном случае $).
СЛЕДУЮЩЕЕ никогда не актуально.