Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
(left - rightmost)
Эти грамматики относятся к восходящим грамматикам (снизу - вверх).
В LR- грамматиках сворачиваются самые правые части правил для самых левых нетерминальных символов и анализируется очередной самый правый символ свертываемой части строки.
К числу LR- грамматик относятся грамматики с предшествованием.
Определим специальные отношения, которые могут возникать между символами стоящими рядом в сентенциальной форме. Здесь правые части грамматических правил будем называть свертками.
1. Если Si и Sj - два рядом стоящие символа входят в одну свертку, то между ними существует отношение: Si = *Sj (назовем его равно);
... Si Sj...
Пример. В сентенциальной форме AbCdEfg при наличии правила K®CdE, существуют отношения
C =* d, d =* E
2. Если Si и Sj два рядом стоящие символа и с Sj начинается какая-то свертка, то между ними существует отношение: Si <*∙Sj;
Si Sj...
Пример. В сентенциальной форме AbCdEfg при наличии правила L ® dE
Существует отношение
C <* d
3. a) Если Si и Sj два рядом стоящие символа и Si самый правый символ в свертке, то между ними существует отношение: Si *> Sj;
... Si Sj
Пример. В сентенциальной форме AbCdEfg при наличии правила L ® dE
существует отношение
E *> f
б) Если Si и Sj два рядом стоящие символа и Si самый правый символ в одной свертке, а Sj - самый левый в другой, то между ними существует отношение: Si *> Sj;
... Si Sj...
Пример.. В сентенциальной форме AbCdEfg при наличии правил L ® dE и M ® fg
существует отношение E *> f
Для удобства дальнейшей работы составим таблицу левых и правых символов, которые могут оказаться в подставленных вместо этих символов цепочках на месте данных нетерминальных символов. Таблица строится на основе анализа грамматических правил.
A ® BC
B ® lC
B ® CA
C ® d
левые | правые | |
A | B l C d | C d |
B | l C d | C A d |
C | d | d |
Выявим отношения:
B =* C l =* C C =* A
B<*∙Л(C) (множество левых для С)
B<*∙Л(C) = {d}
l<* ∙Л(C)
C<*∙Л(C) = {B, l, C, d}
{C, A, d} = П(B)∙*>C
0 = П(l)∙*>C
{d} = П(C)∙*>C (3a)
{C, A, d} = П(B)∙*> Л(C) = {d} (3b)
{d} = П(C)∙*>Л(A)={B, l, C, d}
И сведем их в таблицу - матрицу предшествования.
A | B | C | d | l | |
A | ∙*> | ∙*> | |||
B | =* | <*∙ | |||
C | =*∙ | <* | *> <* | *> <* | <* |
d | *> | *> | *> | ∙*> | *> |
l | =*∙ | <*∙ |
Грамматика называется грамматикой с предшествованиями, если между любыми двумя символами, стоящими рядом в сентенциальной форме, существует строго одно отношение предшествования.
Дата публикования: 2014-11-03; Прочитано: 322 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!