Напомним, что для любого нетерминала 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)-грамматикой.