Однозначность грамматики и языка.
Одним из важных свойств грамматики с точки зрения трансляции является ее однозначность, означающая то, что не существует предложения, являющегося кроной двух или более деревьев вывода в данной грамматике. (Неоднозначность грамматики нельзя путать с неоднозначностью языка, порождаемого грамматикой. Язык неоднозначен, если его нельзя породить ни одной однозначной грамматикой. Таков, например, язык, состоящий из всех цепочек аnbmck, в которых либо п = т, либо т = k.)
Свойство однозначности грамматики может быть нарушено в результате эквивалентного преобразования. Например, для однозначной грамматики Г0 эквивалентной является неоднозначная грамматика, имеющая следующий набор правил:
Е → Е + Е|Е * Е|(Е)|а. Действительно, для выражения а + а * а можно построить два разных дерева вывода (рис. 2.3). Содержательно это означает следующее: нельзя сказать, что выполняется в выражении а + а * а раньше: умножение или сложение. Преобразование,’ нарушающее однозначность грамматики, почти всегда будет недопустимым.
Похожие записи
No user прокомментировали сообщение
Оставить комментарий