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

I.14. Цепочки вывода

I.14.1. Понятие о выводе

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

β = δ1 γ δ2 – называется непосредственно выводимой из цепочки

α = δ1 ω δ2

из грамматики G(VT,VN,P,S), V=VT ∪ VN, δ1,υ, δ2 ∈ V* > ω ∈ V+

в ней существует правило

ω → υ ∈ P

Непосредственная выводимость цепочки β из цепочки α обозначается

α ⇒β

При выводе выполняется подстановка по цепочке γ вместо подцепочки ω, β –выводима из цепочки α в том случае, если можно взять несколько символов в цепочке α, заменить их на другие символы, согласно некоторому правилу грамматики и получить цепочку β. При непосредственной выводимости любая из цепочек δ1, δ2 может быть пустой или обе могут быть пустыми. В предельном случае цепочка α может быть заменена на цепочку β, тогда в грамматике G должно существовать правило

α ⇒β ∈ P

Цепочка β называется выводимой из цепочки α (α ⇒*β) в том случае, если выполняется одно из двух условий:

    1. β – непосредственно выводимая из α (α ⇒β)

    2. γ - непосредственно выводимая из β (γ ⇒β)

∃ γ такая, что γ , выводимая из α и β , - непосредственно выводимая

γ ⇒α

β ⇒*γ

Суть в том, что β выводимая из цепочки α (α ⇒β) или если можно построить последующие непосредственные цепочки из α ⇒β

В этой последовательности каждая последующая цепочка υi непосредственно выводима из предыдущей цепочки υi-1 .

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

α ⇒ +β

Если число шагов вывода известно, то его можно непосредственно указать в знаках выводимости цепочек

α ⇒4 β (цепочка β выводится из цепочки α за 4 шага вывода)

Пример

G({0,1,…,9,-,+},{S,T,F},P,S)

P:

S→ |+T|-T

T→F | TF

F→0|…|9

Построим несколько произвольных цепочек вывода

  1. S⇒-T⇒-TF⇒-TFF⇒-FFF⇒-4FF⇒-47F⇒-479

  2. S⇒T⇒TF⇒T8⇒F8 ⇒18

  3. T⇒TF⇒T0⇒TF0⇒T50⇒F50⇒350

  4. TFT⇒TFFT⇒TFFF⇒FFFF⇒1FFF⇒1FF4⇒-10F4 ⇒1004

  5. F ⇒5

Результат

  1. S ⇒* 479 или S ⇒ + - 479 или S ⇒7 -479

  2. S ⇒* 18 или S ⇒+18 или S ⇒518

  3. T ⇒* 350 или T ⇒ -250 или T ⇒6 350

  4. T ⇒* 1004 или TFT ⇒+1004 или TFT ⇒7 1004

  5. F ⇒* 5 или F 15

Выводы построены на основе грамматики G. Можно построить сколько угодно цепочек вывода.

Пример 2

G3(a,b,c),{B,C,D,S},P3}

P3

B→ aBbC|ab

Cb→bC

CD→Dc

bDc→bcc

abD→abc

L(G3)={anbncn| n>0}

aaaabbbbcccc

S ⇒BD ⇒ aBbCD ⇒aaBbCbCD ⇒ aaaBbCbCbCD ⇒aaaabbCbCbCD⇒ aaaabbbCCbCD ⇒

⇒aaaabbbCbCCD ⇒ aaaabbbbCCCD ⇒aaaabbbbCCDc ⇒ aaaabbbbCDcc ⇒ aaaabbbbDccc ⇒

⇒ aaaabbbbcccc

Тогда для грамматики G3 получили вывод

S⇒* aaaabbbbcccc

I.14.2. Сентенциальная форма грамматики

Вывод называется законченным, если на основе цепочки β, полученной в результате вывода нельзя больше сделать ни одного шага вывода, иначе говоря, вывод называется законченным, если цепочка β, полученная в результате вывода пустая или содержит только терминальные символы грамматики.

G(VT,VN,P,S) (β ∈ VT* )

Цепочка β, полученная в результате вывода называется конечной цепочкой вывода. В рассмотренном ранее примере все построенные выводы являются законченными, а вывод S

S ⇒* -4FF из первой цепочки будет не законченным

Цепочка α ∈ V* называется сентенциальной формой грамматики

G(VT,VN,P,S),V=VT ∪ VN , если она выводима из целевого символа S ⇒* α

Если цепочка α ∈ VT * получена в результате законченного вывода,то она называется конечной сентенциальной формой. Из рассмотренного примера, можно заключить, что -479,18 являются конечными сен. Формами грамматики целых десятичных чисел со знаком, т.к. в примере существуют выводы

S ⇒* - 479 (1)

S ⇒* 18 (2)

Цепочка F8 из вывода (2) тоже является с.ф., поскольку справедливо соотношение S ⇒* F8, но она не является конечной цепочкой вывода. В тоже время в примерах 3,4,5 вывода присутствует с.ф.

Цепочки 350,1004,5 тоже являются конечными с.ф. Чтобы доказать это нужно построить другие цепочки вывода.

Для цепочки 5 S ⇒ T ⇒ F ⇒5 получается вывод S ⇒* 5

Для цепочки TFT(4) не выводима из целевого символа грамматики S, поэтому с.ф. не является.

Язык L, заданный грамматикой G(VT,VN,P,S) это множество всех конечных с.форм грамматики G и обозначается L(G). Алфавитом такого языка будет множество символов грамматики VT, т.к. все конечные с.ф. грамматики – это цепочки алфавита VT.

Две грамматики G(VT,VN,P,S) и G’(VT’,VN’,P’,S’) называются эквивалентными, если эквивалентны заданные ими языки

L(G)=L’(G’)

Эквивалентные грамматики должны иметь пересекающее множество терминальных символов

VT ⋂VT’ ≠0 и часто они совпадают VT=VT’, а множество нетерминальных символов, правила гр. и целевой символ у них могут отличаться.

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