2014-09-02 6 views
0

Я знаю:Грамматика А некоторые вызовы о SLR, LALR

Язык называется LL (1), если она может быть порождена LL (1) грамматикой. Можно показать, что LL (1) грамматики

not ambiguous and 
not left-recursive. 

, но я столкнулся с проблемой.

Почему Грамматика

S-> aBDb

B -> лямбда

D-> дО | лямбда

почему эта грамматика не LL (1), ни SLR, ни LALR? кто-нибудь мог бы описать меня?

+1

Не нужно беспокоиться - эта грамматика LL (1) и SLR (1). Кто вам сказал, что нет? – Gunther

+0

Уважаемый @Gunther, это тест на вступительный экзамен P.hd. ответ говорит, что это не так. – 2014-09-02 19:18:51

+0

Другой пользователь предполагает, что в этом вопросе есть опечатка, которая делает грамматику LL (1), SLR (1) и LALR (1). При удалении опечатки грамматика не является LL (1), SLR (1) или LALR (1). Тем не менее, я думаю, что лучше всего, если это будет опубликовано как другой вопрос, так как в противном случае я должен полностью переделать свой ответ с нуля. – templatetypedef

ответ

0

Эта грамматика действительно LL (1). Вот таблица разбора:

 a  b  d  $ 
S  aBDb 
B   eps eps 
D   eps dD 

Это также SLR (1). Вот ПОСЛЕДУЮЩИЕ наборы:

S: $ 
B: d, b 
D: b 

Вот наборы конфигурированию:

S' -> .S$ 
S -> .aBDb ($) 

S' -> S.$ 

S -> a.BDb ($) 
B -> .  (b, d) 

S -> aB.Db ($) 
D -> .  (b) 
D -> .dD  (b) 

D -> d.D  (b) 
D -> .dD  (b) 
D -> .  (b) 

D -> dD.  (b) 

Есть нет сдвига/или уменьшения/уменьшения конфликтов, так что эта грамматика SLR (1). Следовательно, это также ЛАЛР (1).

Надеюсь, это поможет!

+0

Дорогой templatetypede, не могли бы вы отправить свой адрес электронной почты? – 2014-09-10 08:02:34

+0

ваш ответ совершенно неправ, это не ЛАЛР и ни SLR. – user153695

+0

@ user153695 Возможно, что я совершил ошибку здесь, но я не понимаю, что это такое. Можете ли вы указать, какую ошибку я сделал? Я бы хотел, чтобы этот ответ был полезен будущим читателям. – templatetypedef