Это вопрос из Книги Дракона. Это грамматика:
Вопрос состоит в том, как показать, что это LL (1), но не SLR (1).
Чтобы доказать, что это LL (1), я попытался построить его таблицу синтаксического анализа, но я получаю несколько продукций в ячейке, что противоречит.
Подскажите пожалуйста как это LL (1) и как это доказать?
formal-grammars
compilers
parsers
Винаяк Гарг
источник
источник
Ответы:
Во-первых, давайте дадим номер вашей продукции.
Давайте вычислим первый и последуем за множествами. Для небольших примеров, подобных этим, достаточно использовать интуицию об этих наборах.
Теперь давайте вычислим таблицу . По определению, если мы не получим конфликты, грамматика будет L L ( 1 ) .LL(1) LL(1)
Поскольку нет конфликтов, грамматика .LL(1)
Теперь для таблицы . Во-первых, автомат L R ( 0 ) .SLR(1) LR(0)
источник
Если вас не спрашивают, вам не нужно создавать таблицу LL (1), чтобы доказать, что это грамматика LL (1). Вы просто вычисляете наборы FIRST / FOLLOW, как Алекс:
И тогда по определению грамматика LL (1) должна:
Итак, для данной грамматики:
Что касается анализа SLR (1), я думаю, что он безупречен!
источник
Ищите достаточное условие, которое делает грамматику LL (1) (подсказка: посмотрите на ПЕРВЫЕ множества).
Найдите необходимое условие, которому должны соответствовать все грамматики SLR (1) (подсказка: посмотрите на следующие СЛЕДУЮЩИЕ наборы).
источник