- Верно ли, что LR(0)-Parsers просто уменьшает, если нет перехода для следующего входного символа (потому что он не имеет просмотра вперед)?
- Верно ли, что SLR(1)-парсеры используют FOLLOW-Set продукции в качестве прогноза?
- Верно ли, что LR(1)-парсеры используют FIRST-, не FOLLOW-Set для просмотра вперед?
Алгоритм для closure
явно использует FIRST
closure(S)
For each item [A → α ⋅ B β, t] in S,
For each production B → γ in G,
For each token b in FIRST(βt),
Add [B → ⋅ γ, b] to S
Опять же, я смущен этим.
Под параграфом 4.7.1 Canonical LR(1) Items
Книга Дракона говорит:
Таким образом, мы вынуждены сокращать на A → α только те входные символы a, для которых [A → α·, a] является элементом LR(1) в состояние на вершине стека. Набор таких всегда будет подмножеством FOLLOW(A), но может быть и правильным подмножеством, как в примере 4.51.