Студопедия
rus | ua | other

Home Random lecture






Некоторые свойства грамматик.


Date: 2015-10-07; view: 431.


Понятие выводимости

Отношение ÞG непосредственного вывода на множестве (T È N)* – j ÞG y означает, что y непосредственно выводимо из j для грамматики G=(T, N, P, S), т.е, если abg – цепочка из множества (T È N)* и b ® d – правило из Р, то abg ÞG adg

Транзитивное замыкание отношения ÞG+ (нетривиальный вывод за один и более шагов) – j ÞG+ y означает, что y выводимо из j нетривиальным образом (возможно за несколько шагов).

Рефлексивное и транзитивное замыканиеотношения ÞG* (вывод за нуль и более шагов) – j ÞG* y означает, чтоy выводимо из j.

Пусть Þkk-я степень отношения Þ, тогда, если a Þk b, то существует последовательность a0a1a2a3 ... ak из к+1-й цепочки: a=a0, a1, ... ai -1 Þ ai,, где 1≤i≤k и ak=b.

Например, грамматика, порождающая язык {0n1n | n≥0} (| – где), имеет вид:

G0=({0,1}, {S}, S, P),

где набор правил определяется следующим образом: P={S→0S1, S→ε};

грамматика, порождающая язык {ambn | m,n ≥ 0}, имеет вид: G1=({a,b}, {S,A,B}, S, P),

где набор правил определяется, как P={S→AB, A→aA, A→ε, B→bB, B→ε}.

Например, выводы для грамматики G1=({0, 1}, {A, S}, S, P):

S порождает: S Þ 0A1 Þ 00A11 Þ 0011

i-тая степень отношения: S Þ1 0A1; S Þ2 00A11; S Þ3 0011

транзитивное замыкание отношения: S Þ+ 0A1; S Þ+ 00A11; S Þ+ 0011

рефлексивное и транзитивное замыкание отношения: S Þ* S; S Þ* 0A1; S Þ* 00A11; S Þ* 0011

где 0011Ì L(G1) – принадлежит языку L грамматики G1

1. Эквивалентность грамматик – когда различные грамматики порождают один и тот же язык, т.е. грамматики G1 и G2 будут эквивалентными, если L(G1) = L(G2).

Например, G1=({0,1}, {A,S}, S, P1) и G2=({0,1}, {S}, S, P2)

где P1: S → 0A1

P2: S → 0S1 | 01 (| – знак или)

0A → 00A1

A → ε

эквивалентны, так как обе порождают язык L(G1)=L(G2)={0n1n | n>0}

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

2. Определение грамматик не накладывает никаких ограничений на количество нетерминалов в левой части правил.

Например, грамматика G=({a,b,c},{S,B,C},S,P), где P содержит следующие правила: P={S→aSBC,S→abC,CB→BC,bB→bb,bC→bc,cC→cc}, порождает язык {anbncn | n≥1}.

В грамматике G=({0,1},{А,S},S,P), где P={S → 0A, 0A → 00A1, S → ε} левая часть одного из правил содержит пару из терминального и нетерминального символа.

Эквивалентная ей грамматика G1=({0,1}, {A,S}, S, P1), где

P1: S → 0A1

0A → 00A1

A → ε


<== previous lecture | next lecture ==>
Грамматика, правила, цепочки. | Классы грамматик в соответствии с классификацией Хомского.
lektsiopedia.org - 2013 год. | Page generation: 1.794 s.