10.02.2019 Views

opora

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})

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!