Формальные языки, грамматики и основы построения трансляторов. Кревский И.Г - 47 стр.

UptoLike

47
разбираются слева направо (Left), используются самые правые выводы
(Right), а варианты порождающих правил выбираются с помощью одного
предварительно просмотренного символа. Более подробно LR-грамматики
будут рассмотрены в параграфе, посвященном методам восходящего разбора.
Даже если правая часть порождающего правила и не начинается с
терминала, каждый вариант какого-либо нетерминального символа может
дать начало только
тем строкам, которые начинаются с одного из
конкретного множества терминалов. Например, на основании порождающих
правил
S
RY
S
TZ
R
paXb
T
qaYd
можно вывести, что если для R и T нет других порождающих правил,
порождающее правило S
RY желательно применять в разборе сверху вниз
(нисходящий разборот начального символак строке) только когда
предварительно просматриваемым символом является p. Аналогично
порождающее правило S
TZ рекомендуется в тех случаях, когда таким
символом окажется q.
Это приводит к идее множеств символов-предшественников,
определяемых как
a
S(A)
A
aα,
где Aнетерминальный символ, αстрока терминалов и/или
нетерминалов, возможно пустая, а S(A) обозначает множество символов-
предшественников A. В грамматике с порождающими правилами
P
Aс
P
Bd
A
a
A
aA
B
b
B
bB
a и bсимволы-предшественники для P. Определим также множество
символов-предшественников для строки терминалов и/или нетерминалов:
a
S(α)
α
aβ,
                                                                       47
разбираются слева направо (Left), используются самые правые выводы
(Right), а варианты порождающих правил выбираются с помощью одного
предварительно просмотренного символа. Более подробно LR-грамматики
будут рассмотрены в параграфе, посвященном методам восходящего разбора.
     Даже если правая часть порождающего правила и не начинается с
терминала, каждый вариант какого-либо нетерминального символа может
дать начало только тем строкам, которые начинаются с одного из
конкретного множества терминалов. Например, на основании порождающих
правил
     S → RY                                    R → paXb
     S → TZ                                    T → qaYd
     можно вывести, что если для R и T нет других порождающих правил,
порождающее правило S → RY желательно применять в разборе сверху вниз
(нисходящий разбор – от начального символа – к строке) только когда
предварительно просматриваемым        символом является p. Аналогично
порождающее правило S → TZ рекомендуется в тех случаях, когда таким
символом окажется q.
     Это   приводит      к   идее   множеств   символов-предшественников,
определяемых как
     a ∈ S(A) ⇔ A ⇒ aα,
     где A – нетерминальный символ, α – строка терминалов и/или
нетерминалов, возможно пустая, а S(A) обозначает множество символов-
предшественников A. В грамматике с порождающими правилами
     P → Aс                                    A → aA
     P → Bd                                    B→b
     A→a                                       B → bB
     a и b – символы-предшественники для P. Определим также множество
символов-предшественников для строки терминалов и/или нетерминалов:
     a∈ S(α) ⇔ α ⇒ aβ,