21 - Bezkontextové jazyky a jejich modely

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

  • grafické znázornění jednotlivých pravidel
  • použití jednotlivých pravidel znázorníme derivačním stromem (skládá se z pravidlových stromů)
  • k sestavení derivačního stromu nás může dovést více řešení - my se budeme zajímat o následující dvě:
    1. Nejlevější derivace ⇒lm - přepisujeme vždy nejlevější neterminál
    2. Nejpravější derivace ⇒rm - přepisjeme vždy nejpravější neterminál
    • všimněte si, že jsme došli ke stejnému řešení
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

  • jeden výpočetní krok ZA
  • značíme |- … např. xApay |– xwqy [r]
  • více přechodů za sebou - sekvence přechodů

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

  • z každé konfigurace lze provést pouze 1 přechod
  • ZA jsou silnější než DZA (DZA přijímá podmnožinu jazyků přijímaných ZA)

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

  • zásobníkový automat, který se od obyčejného ZA liší v definici přechodu R
    • konečná množina pravidel tvaru: vpa → wq, kde v, w ∈ Γ* , p, q ∈ Q, a ∈ Σ ∪ {ε}
    • ze zásobníku můžeme přečíst celý řetězec a ne pouze znak

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

  • existují dva základní přístupy:
    1. SA shora dolů - z S směrem ke vstupnímu řetězci
      • porovnávací pravidlo - pro každé a ∈ Σ: přidej asa → s do R
      • expanzivní pravidlo - pro každé A → a1…an ∈ P v G, přidej As → an…a1s do R
    2. SA zdola nahoru - ze vstupního řetězce směrem k S
      • shiftovací pravidlo - pro každé a ∈ Σ: přidej sa → as do R
      • redukční pravidlo - pro každé A → x ∈ P v G: přidej xs → As do R
      • finishovací pravidlo - #Ss → f
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

Diskuze

Jirka Hynekgeorge, 2010/11/04 13:48

Ještě precedenční tabulku.

Vložte svůj komentář
 
temata/21-bezkontextove_jazyky/main.txt · Poslední úprava: 2011/05/30 15:56 autor: george
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki