Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_po_EVM.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.78 Mб
Скачать

I.15.2. Проверка однозначной и эквивалентной грамматик

Гр. я.п. всегда должна быть однозначной. Нужно:

1) проверить, является ли она однозначной;

2)если она неоднозначная, то как ее преобразовать к однозначному виду.

Однозначность – это свойство гр., а не языка. Для некоторых языков, заданных неоднозначными гр., можно построить эквив. однознач. гр., задающую тот же язык. Чтобы убедиться, что заданная гр. является неоднознач. , достаточно в заданном ею языке найти хотя бы одну цепочку, которая допускала бы более чем 1 левосторон. или правосторон. вывод.

Не всегда легко обнаружить такую цепочку символов. Кроме того, если такая цепочка не найдена, нельзя утверждать, что данная гр. является однозначной, поскольку перебрать все цепочки невозможно, их количество бесконечно. Если всё же гр. является неоднозначной, то необходимо попытаться преобразовать ее к однозначному виду.

Например, для рассмотренной ранее неоднозначной гр. ариф. выражений существует эквивалентная ей однозначная гр. a b

G’({+,-,*,/,(,),a,b},{S,T,E},P’,S)

С правилом

P’ :

S→ S+T|S-T|T

T→T*E|T/E|E

E→(S) |a|b

В этой гр. для рассмотренной выше цепочки символов языка(a*b+a) возможен только 1 левосторонний вывод

S⇒ S+T ⇒ T+T⇒T*E+T⇒E*E+T⇒a*E+T⇒a*b+T⇒a*b+E⇒a*b+a

Этому выводу соответствует единственное возможное дерево вывода

Хотя цепочка вывода несколько удлинилась, приоритет операции в данном случае единственно возможный и соответствует их порядку в арифметике.

Задача эквивалентности грамматик в общем виде формируется так:

Имеются две гр. G и G’. Необходимо построить алгоритм, который позволял бы установить являются ли они эквивалентными, т.е. надо проверить утверждение L(G)=L(G’)

Задача установления экв. гр. в общем случае, так же как и задача однозначности в общем случае, не разрешимы. Однако неразрешимость этих задач в общем случае совсем не означает, что они неразрешимы вообще. Во многих частных случаях для определенных классов (типов) гр. ,в частности для регулярных гр. , эти задачи решены. Например, приведенная выше гр. G’ для ариф. выражений над операндами a и b относится к классу гр. КС гр. На основе этой гр. можно построить распознаватель на основе МП-автомата, а потому можно утверждать, что она является однозначной.

I.15.3. Правила, задающие неоднозначность в грамматиках

Для КС гр. существуют определенного вида правила,по наличию которых все множество наличия гр. G(VT,VN,P,S) можно утверждать, что она является неоднозначной.

Правила:

1) A →AA| α

2) A→AαA| β

3)A→ αA|A β | γ

4)A→ αA|αA β A| γ

Если в заданной гр. встречается хотя бы одно правило подобного вида, то такая гр. всегда будет неоднозначной. Однако, если подобных правил во всем множестве гр. нет – это совсем не означает, что она является однозначной, т.е. это условие необходимое, но недостаточное. Установленные условия при удовлетворении которых гр. всегда является однозначной. Они справедливы для всех регулярных и многих классов КС гр. Однако известно, что эти условия являются достаточными, но необходимыми для данных грамматик.

Например, для гр. ариф. выражений с операндами a и b

a…b

G({+,-,*,/,(,),a,b},{S},P,S)

Во множестве правил

P:S→S+S|S-S|S*S|S/S|(S) |a|b

Встречаются правила 2 типа

S→S+S

S→a,

поэтому данная гр. является неоднозначной.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]