You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY87<br />
Nyní předpokládejme, že induktivní hypotéza platí pro všechny derivace, kratší<br />
než n. Můžeme psát<br />
αAγ ⇒<br />
rm<br />
αβy ⇒<br />
rm n−1 xy<br />
Je-li řetězec αβ tvořen pouze terminálními symboly, pak αβ = x a (q, xy, /S) ⊢ ∗<br />
(q, y, /Sαβ) ⊢(q, y, /SαA). Není-li αβ ∈ Σ ∗ , pak můžeme psát αβ = γBz, kde B je<br />
nejpravější nonterminál a podle induktivní hypotézy<br />
S ⇒<br />
rm ∗ γBzy ⇒<br />
rm n−1 xy<br />
implikuje (q, xy, /S) ⊢ ∗ (q, zy, /SγB). Platí tedy (q, zy, /SγB) ⊢ ∗ (q, y, /SγBz) ⊢ (q, y,<br />
/SαA) a tudíž jsme dokázali induktivní hypotézu. Protože (q, ɛ, /SS) ⊢(r, ɛ, ɛ) dostáváme<br />
L(G) ⊆ L(R).<br />
Abychom dokázali, že L(R) ⊆ L(G), ukažme, že platí implikace:<br />
Jestliže (q, xy, /S) n ⊢(q, y, /SαA), pak αAy ⇒ ∗ xy<br />
Pro n = 0 tato implikace platí. Předpokládejme, že platí také pro všechny posloupnosti<br />
přechodů kratší než n. Protože vrchol zásobníku je nonterminální symbol,<br />
prováděl se poslední přechod podle předpisu (2) v zobrazení δ a můžeme psát:<br />
(q, xy, /S) n−1<br />
⊢ (q, y, /Sαβ) ⊢(q, y, /SαA)<br />
kde A → β je pravidlo z P . Existuje tedy derivace αAy ⇒ αβy ⇒ ∗ xy.<br />
Jako speciální případ uvažujme implikaci:<br />
je-li (q, w, /S) ∗ ⊢(q, ɛ, /SS), pak S ⇒ ∗ w<br />
Protože však platí (q, w, /S) ⊢ ∗ (q, ɛ, /SS) ⊢(r, ɛ, ɛ) je L(R) ⊆ L(G) a společně s první<br />
částí důkazu dostáváme L(G) = L(R).<br />
✷<br />
Poznamenejme, že automat R skutečně představuje model syntaktického analyzátoru,<br />
který vytváří pravou derivaci vstupního řetězce postupnými redukcemi<br />
l-fráze větných forem (počáteční větná forma je vstupní řetězec, koncová větná<br />
forma je výchozí symbol gramatiky). Bezprostředně po přechodu automatu je<br />
pravá větná forma αAx reprezentována obsahem zásobníku (řetězec αA) a nezpracovanou<br />
částí vstupního řetězce (řetězec x). Následující činností automatu je přesunutí<br />
prefixu řetězce x na vrchol zásobníku a redukce l-fráze dané vrcholovým<br />
řetězcem zásobníku. Tento typ syntaktické analýzy se, jak již víme, nazývá syntaktická<br />
analýza zdola–nahoru.<br />
Příklad 4.23 Sestrojme syntaktický analyzátor R zdola–nahoru pro gramatiku<br />
s pravidly<br />
E → E + T | T<br />
T → T ∗ F | F<br />
F → (E) | i<br />
Nechť R je rozšířený zásobníkový automat<br />
kde δ je zobrazení<br />
R = ({q, r}, {+, ∗, (, ), i}, {/S, E, T, F, +, ∗, (, ), i}, δ, q, /S, {r})