Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY86<br />
Řešení:<br />
kde δ je zobrazení<br />
P = ({q}, {+, ∗, (, ), i}, {+, ∗, (, ), i, E, T, F }, δ, q, E, ∅)<br />
δ(q, ɛ, E) = {(q, E + T ), (q, T )}<br />
δ(q, ɛ, T ) = {(q, T ∗ F ), (q, F )}<br />
δ(q, ɛ, F ) = {(q, (E)), (q, i)}<br />
δ(q, a, a) = {(q, ɛ)} pro všechna a ∈ {+, ∗, (, ), i}<br />
Pro vstupní řetězec i + i ∗ i může zásobníkový automat P realizovat tuto posloupnost<br />
přechodů:<br />
(q, i + i ∗ i, E) ⊢ (q, i + i ∗ i, E + T )<br />
⊢ (q, i + i ∗ i, T + T )<br />
⊢ (q, i + i ∗ i, F + T )<br />
⊢ (q, i + i ∗ i, i + T )<br />
⊢ (q, +i ∗ i, +T )<br />
⊢ (q, i ∗ i, T )<br />
⊢ (q, i ∗ i, T ∗ F )<br />
⊢ (q, i ∗ i, F ∗ F )<br />
⊢ (q, i ∗ i, i ∗ F )<br />
⊢ (q, ∗i, ∗F )<br />
⊢ (q, i, F )<br />
⊢ (q, i, i)<br />
⊢ (q, ɛ, ɛ)<br />
Nyní ukážeme, jakým způsobem lze k bezkontextové gramatice G definovat rozšířený<br />
zásobníkový automat reprezentující syntaktický analyzátor zdola–nahoru.<br />
Věta 4.15 Nechť G = (N, Σ, P, S) je bezkontextová gramatika. Rozšířený zásobníkový<br />
automat R = ({q, r}, Σ, N ∪ Σ ∪ {/S}, δ, q, /S, {r}), kde zobrazení δ je<br />
definováno takto:<br />
(1) δ(q, a, ɛ) = {(q, a)} pro všechna a ∈ Σ.<br />
(2) Je-li A → α pravidlo z P , pak δ(q, ɛ, α) obsahuje (q, A).<br />
(3) δ(q, ɛ, S /S) = {(r, ɛ)},<br />
přijímá jazyk L(G), tj. L(R) = L(G).<br />
Důkaz: Ukážeme, že automat R pracuje tak, že vytváří pravou derivaci postupnými<br />
redukcemi l-fráze počínaje terminálním řetězcem (umístěným na vstupní<br />
pásce) a konče výchozím symbolem S. Jinými slovy automat R realizuje syntaktickou<br />
analýzu zdola–nahoru.<br />
Změna konvence: Vrchol zásobníku budeme nyní uvádět vpravo. Induktivní<br />
hypotéza, kterou dokážeme indukcí pro n má tvar:<br />
S ⇒<br />
rm ∗ αAy ⇒<br />
rm n xy implikuje (q, xy, /S) ∗ ⊢(q, y, /SαA), ⇒<br />
rm<br />
značí pravou derivaci.<br />
Pro n = 0 tato hypotéza platí, protože αA = x a tudíž automat R provádí<br />
přechody podle δ(q, a, ɛ) = {(q, a)}, a ∈ Σ, přesouvající řetězec x do zásobníku.