Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

LR - грамматики



(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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...