Я получил гипотезу от нашего учителя, и он хочет, чтобы мы нашли и подтвердили ее.У нас есть парсер SLR (1) и LALR (1).Гипотеза:
Предположим, у нас есть языковая структура под названием X. Если мы не можем предоставить LALR (1) грамматику для этой структуры, мы не сможем также предоставить SLR (1) ивозможно, грамматика LR (1) может решить проблему.но если бы мы могли предоставить грамматику LALR (1) для этой структуры, мы могли бы также предоставить SLR (1).
Если вы ищете в Интернете, вы найдете множество сайтов, которые говорят, что эта грамматика не SLR (1), а LALR (1):
S -> R
S -> L = R
L -> * R
L -> id
R -> L
("id "," * "и" = "являются терминалами, а другие нетерминалами)
Если мы попытаемся найти элементы SLR (1), мы увидим конфликт сдвиг / уменьшение.это правда, но моя гипотеза говорит о другом.В нашей гипотезе мы говорим о языке , описываемом грамматикой, а не самой грамматикой!Мы можем удалить «R» и преобразовать грамматику в LL (1), и это также SLR (1) и LALR (1):
S -> LM
M -> epsilon
M -> = L
L -> * L
L -> id
Вы можете попробовать эту грамматику, и вы увидите, что эта грамматика описывает тот же язык , что и в последней грамматике, с грамматикой SLR (1) и LALR (1)!
поэтому моя проблема не в том, чтобы найти грамматику LALR (1), но не SLR (1).Их много в интернете.Я хочу знать, есть ли язык , который имеет грамматику LALR (1), но не грамматику SLR (1)?и если наша гипотеза верна, то нет необходимости в том, чтобы LALR (1) и SLR (1) могли бы сделать все для нас, однако LALR (1) проще в использовании и может быть в будущем языком отвергнуть эту гипотезу.
Извините за плохой английский.
Спасибо.