2016-05-19 8 views
0

Например, я хотел бы получить строку «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 

Какой вывод был использован и может я считаю, эта грамматика неоднозначна?

+0

Пожалуйста, не используйте изображения, содержащие текст. Вставьте текст прямо в свой вопрос в виде текста. (Используйте кнопку '{}' code sample для предварительно отформатированного текста или просто отступьте каждую строку в четыре пробела.) – rici

ответ

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^