Могу ли я считать этот вывод самым левым или / и самым правым?

Например, я хотел бы получить строку 'aabbccdd' из заданного набора продукции:

S -> AB  | C
A -> aAb | ab
B -> cBd | cd
C -> aCd | aDd
D -> bDc | bc

Я могу вывести строку из AB, используя самый левый и самый правый вывод.

Но как насчет C? После получения строки у меня всегда есть только одна переменная.

Вывод из C:

S -> C
S -> aCd
S -> aaDdd
S -> aabDcdd
S -> aabbccdd

Какой вид деривации использовался и могу ли я считать эту грамматику неоднозначной?

1 ответ

Решение
  1. В самом правом выводе выводится самый правый нетерминал. В самом левом выводе выводится самый левый нетерминал. Если есть только один нетерминал, деривация будет как самой левой, так и самой правой. Это не противоречие.

  2. Поскольку есть две производные для целевой строки, начиная с SГрамматика неоднозначна.

Другие вопросы по тегам