Obsah

21 - Bezkontextové jazyky a jejich modely

Export page to Open Document format

1. Bezkontextová gramatika

Bezkontextová gramatika (BKG) je čtveřice G = (N, T, P, S), kde:

  • N je abeceda neterminálů
  • T je abeceda terminálů, přičemž N ∩ T = ∅
  • P je konečná množina pravidel tvaru A → x, kde A ∈ N, x ∈ (N ∪ T)*
  • S ∈ N je počáteční neterminál

Derivační krok

Nechť G = (N, T, P, S) je BKG.Máme nějakou bezkontextovou gramatiku
Nechť u, v ∈ (N ∪ T)* Dále máme 2 řetězce u a v, které se skládají z terminálů a neterminálů naší gramatiky
a p = A → x ∈ P. a ještě máme jedno pravidlo p, které říká, že neterminál A se dá přepsat terminálem x

Potom, uAv přímo derivuje uxv za použití p v G, zapsáno uAv ⇒ uxv [p] nebo zjednodušeně uAv ⇒ uxv.
Jednoduše řečeno - posloupnost uAv můžeme přepsat na uxv díky pravidlu p

Pokud bude derivačních kroků více za sebou, budeme jim říkat Sekvence derivačních kroků a značit n, kde n nám bude říkat, v kolika derivačních krocích přeměníme jednu posloupnost terminálů/neterminálů na druhou

Nechť:
aAb ⇒ aaBbb [1: A → aBb]
aaBbb ⇒ aacbb [2: B → c]
Potom:
aAb ⇒2 aacbb [1 2]
aAb ⇒+ aacbb [1 2]
aAb ⇒* aacbb [1 2]

Generovaný jazyk, BK jazyk

Nechť G = (N, T, P, S) je BKG. Jazyk generovaný BKG G, L(G), je definován: L(G) = {w: w ∈ T*, S ⇒* w}
Máme nějakou posloupnost terminálů w. Pokud dokážeme v nějaké sekvenci derivačních kroků přepsat startovací neterminál naší BKG do této posloupnosti terminálů, je tento jazyk generovaný naší BKG.

Bezkontextový jazyk je jazyk, pro který existuje bezkontextová gramatika, která tento jazyk generuje.

Pravidlový strom

Nejlevější derivace Nejpravější derivace
Nejlevější derivace Nejpravější derivace

Nechť G = (N, T, P, S) je BKG. Následující 3 jazyky jsou totožné:

  1. {w: w ∈ T*, S ⇒lm* w}
  2. {w: w ∈ T*, S ⇒rm* w}
  3. {w: w ∈ T*, S ⇒* w} = L(G)*

Nejednoznačnost BKG

Nechť G = (N, T, P, S) je BKG. Pokud existuje řetězec x ∈ L(G) s více jak jedním derivačním stromem, potom G je nejednoznačná. Jinak G je jednoznačná.

2. Zásobníkový automat

Zásobníkový automat (ZA) je sedmice: M = (Q, Σ, Γ, R, s, S, F), kde:

  • Q je konečná množina stavů
  • Σ je vstupní abeceda
  • Γ je zásobníková abeceda
  • R je konečná množina pravidel tvaru Apa → wq, kde A ∈ Γ, p, q ∈ Q, a ∈ Σ ∪ {ε}, w ∈ Γ*
  • s ∈ Q je počáteční stav
  • S ∈ Γ je počáteční symbol na zásobníku
  • F ⊆ Q je množina koncových stavů
Grafický popis Výpočet
Grafický popis Výpočet

Přechod ZA

Přijímaný jazyk

Nechť M = (Q, Σ, Γ, R, s, S, F) je ZA.
1.) Jazyk přijímaný ZA M přechodem do koncového stavu, značen jako L(M)f, je definován:
L(M)f = {w: w ∈ Σ*, Ssw |–* zf, z ∈ Γ*, f ∈ F}
2.) Jazyk přijímaný ZA M vyprázdněním zásobníku, značen jako L(M)ε, je definován:
L(M)ε = {w: w ∈ Σ*, Ssw |–* zf, z = ε, f ∈ Q}
3.) Jazyk přijímaný ZA M přechodem do koncového stavu a vyprázdněním zásobníku, značen jako L(M), je definován:
L(M) = {w: w ∈ Σ*, Ssw |–* zf, z = ε, f ∈ F}

Všechny tři jazyky jsou ekvivalentní:

  1. L = L(Mf)f pro ZA Mf ⇔ L = L(M) pro ZA M
  2. L = L(Mε)ε pro ZA Mε ⇔ L = L(Mfε) pro ZA M
  3. L = L(Mf)f pro ZA Mf ⇔ L = L(Mε)ε pro ZA Mε

Deterministický zásobníkový automat

Rozšířený zásobníkový automat

Pro každý RZA M existuje takový ZA M’, pro který platí: L(M)f = L(M’)f.

RZA a modely pro syntaktickou analýzu

Shora dolů Zdola nahoru
Shora dolů Zdola nahoru

Závěr

Fundamentální modely pro bezkontextové jazyky jsou:

  1. Bezkontextové gramatiky
  2. Zásobníkové automaty

Potvrzení

21
Celé jménoOK!!!
Jirka Hynek2011-02-05 12:47:03 
vagy2011-04-12 21:06:37 
 2