Могу ли я считать этот вывод самым левым или / и самым правым?
Например, я хотел бы получить строку '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 ответ
Решение
В самом правом выводе выводится самый правый нетерминал. В самом левом выводе выводится самый левый нетерминал. Если есть только один нетерминал, деривация будет как самой левой, так и самой правой. Это не противоречие.
Поскольку есть две производные для целевой строки, начиная с
S
Грамматика неоднозначна.