Напомним, что для любого нетерминала K мы определяли
(здесь)
множество тех терминалов, которые могут
стоять непосредственно за
в выводимом (из начального
нетерминала) слове; в это множество добавляют также
символ EOI, если нетерминал K может стоять в конце
выводимого слова.
14.3.1. Доказать, что если в данный момент LR-процесса последний
символ стека S равен K, причем процесс этот может в
дальнейшем успешно завершиться, то Next принадлежит
.
Рассмотрим некоторую грамматику, произвольное
слово S из терминалов и нетерминалов и терминал x. Если
множество содержит ситуацию, в которой справа
от подчеркивания стоит терминал x, то говорят, что для
пары
возможен сдвиг. Если в
есть ситуация
, причем x
принадлежит
, то говорят, что для
пары
SLR(1)-возможна
свертка (по правилу
). Говорят, что для пары
возникает SLR(1)-конфликт типа
сдвиг/свертка, если возможны и сдвиг, и свертка. Говорят, что
для пары
возникает
SLR(1)-конфликт типа
свертка/свертка, если есть несколько правил, по которым возможна
свертка.
Грамматика называется SLR(1)-грамматикой, если в ней нет
SLR(1)-конфликтов типа сдвиг/свертка и свертка/свертка ни для одной
пары .
14.3.2. Пусть дана SLR(1)-грамматика. Доказать, что у любого слова
существует не более одного правого вывода. Построить алгоритм
проверки выводимости в SLR(1)-грамматике.
14.3.3. Проверить, является ли приведенная выше на
здесь грамматика (с нетерминалами E, T и
F) SLR(1)-грамматикой.