10.02.2019 Views

opora

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É AUTOMATY56<br />

Po znázornění druhé přímé derivace obdržíme výsledný derivační strom.<br />

〈výraz〉<br />

✉<br />

✥✥✥✥✥✥❵❵❵❵❵❵<br />

✉ ✉ ✉<br />

〈výraz〉 + 〈term〉<br />

✏ ✏✏✏ <br />

✉ ✉ <br />

✉<br />

〈term〉<br />

∗<br />

〈faktor〉<br />

Je-li tedy dána derivace větné formy, pak této derivaci přísluší právě jeden<br />

derivační strom. Důkaz vyplývá z konstrukce derivačního stromu. Podívejme se<br />

nyní, zda uvedené tvrzení platí také obráceně: K derivačnímu stromu větné formy<br />

přísluší pouze jedna derivace. Uvažujme gramatiku G z příkladu 4.1.<br />

S → A B<br />

A → aAb | ab<br />

B → cBd | cd<br />

Na obr. 4.2 jsme znázornili derivační strom k derivaci<br />

S ⇒ AB ⇒ aAbB ⇒ aabbB ⇒ aabbcd<br />

Ukážeme nyní, že existují i jiné derivace věty aabbcd.<br />

nebo<br />

S ⇒ AB ⇒ Acd ⇒ aAbcd ⇒ aabbcd<br />

S ⇒ AB ⇒ aAbB ⇒ aAbcd ⇒ aabbcd<br />

Uvedené derivace věty aabbcd se liší v pořadí, v němž byly vybírány nonterminály<br />

pro přímé derivace. Toto pořadí však ve výsledném derivačním stromě není<br />

postiženo, a proto budou derivační stromy příslušející k 2. a 3. z uvedených derivací<br />

věty aabbcd totožné s derivačním stromem na obr. 4.2. Neplatí tedy tvrzení, že<br />

k derivačnímu stromu přísluší pouze jedna derivace.<br />

Poznamenejme, že jiné derivace věty aabbcd v gramatice z příkladu 4.2 neexistují.<br />

V první a druhé z uvedených derivací byla přepisovací pravidla aplikována<br />

určitým kanonickým způsobem, který je charakteristický pro nejužívanější syntaktické<br />

analyzátory překladačů programovacích jazyků. Zavedeme si pro tyto<br />

speciální derivace vlastní označení.<br />

Definice 4.3 Nechť S = α 1 ⇒ α 2 ⇒ . . . ⇒ α n = α je derivace větné formy α.<br />

Jestliže byl v každém řetězci α i , i = 1, . . . , n − 1 přepsán nejlevější (nejpravější)<br />

nonterminál, pak tuto derivaci nazýváme levou (pravou) derivací větné formy α.<br />

První derivace věty aabbcd je tedy derivací levou, druhá je derivací pravou.<br />

Je-li S = α 0 ⇒ α 1 ⇒ . . . ⇒ α n = w levá derivace věty w, pak je každé<br />

α i , i = 0, 1, . . . , n − 1 tvaru x i A i β i , kde x i ∈ Σ ∗ , A i ∈ N a β i ∈ (N ∪ Σ ∗ ).<br />

K získání větné formy α i+1 bude přepsán nonterminál A i . Obrácená situace platí<br />

pro pravou derivaci.<br />

4.2 Fráze větné formy<br />

Definice 4.4 Nechť G = (N, Σ, P, S) je gramatika a nechť řetězec λ = αβγ je

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

Saved successfully!

Ooh no, something went wrong!