Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯГиА конспект.doc
Скачиваний:
19
Добавлен:
10.11.2018
Размер:
598.02 Кб
Скачать

1.3.8. Неоднозначные и эквивалентные грамматики

Существуют грамматики, в которых одна и та же цепочка может быть получена с помощью различных выводов. Например, в грамматике Г1. 10 цепочка abc может быть получена с помощью двух различных выводов, и ей соответствуют два различных синтаксических дерева.

Г1. 10:

Vт = {a, b, c, d}, Va = {<I>, <A>, <B>},

R =  { <I> ® <A><B>,

<A> ® a, <A> ® ac, <B> ® b, <B> ® cb}.

Первый вывод этой цепочки имеет вид :  

1) <I> Þ <A><B> Þ <A>b Þ acb,

а второй можно получить так :  

2) <I> Þ <A><B> Þ <A>cb Þ acb.

Этим выводам соответствуют разные синтаксические деревья и разборы :

   

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

Г1. 11:

Vт = {0, +}, Va = {<I>},

R = { <I> ® 0,

<I> ® <I> + 0, <I> ® 0 +<I> }.

Два вывода этой грамматики, порождающие одинаковые цепочки, имеют вид:

1) <I> Þ <I> + 0 Þ <I> + 0 + 0 Þ 0 + 0 + 0,

2) <I> Þ 0 + <I> Þ 0 + 0 +<I> Þ 0 + 0 + 0,

а синтаксические деревья, соответствующие этим выводам, можно изобразить так:

 

Рассмотренное свойство грамматик называется неоднозначностью. Оно может быть определено следующим образом.

Определение.   Цепочка языка L(Г) называется неоднозначной, если для её вывода существует более чем одно синтаксическое дерево. Если грамматика Г порождает неоднозначную цепочку, то она называется неоднозначной.

 

Неоднозначность может существовать не только в искусственных языках. Хорошо известно, что в естественных языках могут быть предложения, допускающие неоднозначное написание. Например, "Пальто испачкало окно". В этой фразе не ясно, что является подлежащим, а что дополнением. Другим примером служит английская фраза: "They are flying planes", которая может быть понята двояко: "Они пилотируют самолет" или : Это летящие самолеты". Свойство неоднозначности является крайне нежелательным для искусственных языков, поскольку оно не позволяет однозначным образом восстановить дерево вывода по заданной цепочке языка. В общем случае можно сделать следующий вывод: 1) каждой цепочке, выводимой в грамматике, может соответствовать одно или несколько синтаксических деревьев, 2) каждому синтаксическому дереву могут соответствовать несколько выводов, 3) каждому синтаксическому дереву соответствует единственный правый и единственный левый выводы. Кроме того, следует подчеркнуть, что один и тот же язык может быть получен с помощью различных грамматик.

Определение.   Две грамматики Г1 и Г2 называются эквивалентными, ecли они порождают один и тот же язык, т.е. 

L(Г1) = L(Г2).

1.3.9. Резюме

В зависимости от ограничений, накладываемых на вид правил, формальные грамматики и порождаемые ими языки делятся на четыре типа: общего вида, контекстно-зависимые, контекстно-свободные, автоматные. На практике чаще всего используются контекстно-свободные и автоматные языки и грамматики. 

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

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