78
Bezkontextové gramatiky a jazyky

Bezkontextové gramatiky a jazyky

  • Upload
    alain

  • View
    66

  • Download
    0

Embed Size (px)

DESCRIPTION

Bezkontextové gramatiky a jazyky. Bezkontextové gramatiky. BKG sú gramatiky s pravidlami A  α Kde A  N α  (N  T) * Pripúšťame teda e-pravidlá ( e na pravej strane), ale vieme, že tento problém možno ošetriť rozšírenou gramatikou. BKG, BKJ a Programovacie jazyky. - PowerPoint PPT Presentation

Citation preview

Page 1: Bezkontextové gramatiky a jazyky

Bezkontextové gramatiky a jazyky

Page 2: Bezkontextové gramatiky a jazyky

Bezkontextové gramatiky

BKG sú gramatiky s pravidlamiA α

Kde A N

α (N T)*

Pripúšťame teda e-pravidlá ( e na pravej strane), ale vieme, že tento problém možno ošetriť rozšírenou gramatikou

Page 3: Bezkontextové gramatiky a jazyky

BKG, BKJ a Programovacie jazyky BGK sú základným špecifikačným

prostriedkom programovacích jazykov Nie sú celkom dostatočné, niekedy sa

„vyžaduje“ kontext Problém „nedostatočnosti“ sa rieši dohodou

na úrovni jazyka Neopúšťa sa úroveň bezkontextovosti – je

to podstatne jednoduchšie a účinnejšie

Page 4: Bezkontextové gramatiky a jazyky

Derivácia a jej reprezentácia

Pri analýze nás zaujíma nielen „výsledok“ (generované slovo), ale aj proces, ako sme sa k danému slovu dostali – proces derivácie

Umožňuje nám zistiť vlastnosti gramatiky Existuje viacero spôsobov reprezentácie derivácie Najčastejšie sa používa:

– Klasická postupnosť vetných foriem– Postupnosť čísiel pravidiel použitých v derivácii –

rozbor– Derivačný strom

Page 5: Bezkontextové gramatiky a jazyky

Derivačný strom

Derivačný strom je orientovaný, vrcholovo ohodnotený strom s usporiadanými nasledovníkmi každého vrcholu (ak vrchol má nasledovníkov).

Nech G = (N, T, P, S) je BKG. Potom orientovaný, vrcholovo ohodnotený a usporiadaný strom D je derivačným stromom pre G, ak má nasledujúce vlastnosti:

Page 6: Bezkontextové gramatiky a jazyky

Derivačný strom df

1. Každý vrchol je ohodnotený symbolom z N T { e }

2. Ohodnotenie koreňa stromu je S3. Ak vrchol má aspoň jedného nasledovníka, potom

je ohodnotený symbolom z N4. Ak u1 , u2, …. , uk sú priami nasledovníci

vrchola u, ktorý je ohodnotený symbolom A N a jeho nasledovníci sú ohodnotený zľava doprava symbolmi A1, A2, ... , Ak , potom musí v P existovať pravidlo A A1A2 ... Ak

Page 7: Bezkontextové gramatiky a jazyky

Príklad

Majme gramatikuG = ({A, B, C, D, E, F, G}, { +, -, ., 0, 1, …, 9, z}, P, A)P: A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9

Page 8: Bezkontextové gramatiky a jazyky

Reprezentácia derivácie

Najprv zistime, či reťazec 34.25z-13 je z jazyka L(G). Pokúsime sa ho získať deriváciou z A (začiatočného symbolu gramatiky G)

A môžeme vybrať jednu z alternatív pravidla A B | BzD. Vyberieme druhú. Dostaneme:A BzD na ďalšiu deriváciu môžeme vybrať neterminál B alebo D. Budeme postupovať „systémovo“ a vyberať vždy neterminál „prvý zľava“. Dostaneme:

Page 9: Bezkontextové gramatiky a jazyky

A BzD

A BzD CEzD

použijeme pravidlo C e a dostaneme

A BzD EzD

použijeme pravidlo E F.F a

dostaneme

A BzD EzD F.FzD

postupujeme analogicky ďalej a

postupne dostaneme

A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9

Page 10: Bezkontextové gramatiky a jazyky

A BzD EzD F.FzD

A BzD EzD F.FzD FG.FzD GG.FzD 3G.FzD 34.FzD 34.FGzD 34.GGzD 34.2GzD 34.25zD 34.25zCF 34.25z-F

A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9

Page 11: Bezkontextové gramatiky a jazyky

A * 34.25z-F

34.25z-FG

34.25z-GG

34.25z-1G

34.25z-13

Reťazec 34.25z-13 je z jazyka L(G), pretože existuje derivácia A * 34.25z-13.

A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9

Page 12: Bezkontextové gramatiky a jazyky

Zodpovedajúci derivačný strom

A

B zD

C E

eF . F

F G

G

3

F G

4G

2

5

C F

- F G

G

1

3

Page 13: Bezkontextové gramatiky a jazyky

Niektoré vlastnosti DS

Neukazuje postup, ako bol vytvorený

Má štruktúru

Zo štruktúry sa dajú zistiť vlastnosti derivácie i samotnej gramatiky

Page 14: Bezkontextové gramatiky a jazyky

Rez DS

Rezom DS D nazývame množinu vrcholov C s vlastnosťami

Žiadne dva vrcholy z C neležia na jednej ceste z koreňa DS

K C nemožno pridať žiadny vrchol aby sa neporušila prvá vlastnosť

Page 15: Bezkontextové gramatiky a jazyky

Rez DS a Vetná forma

Zreťazením vrcholov rezu DS v usporiadaní zľava doprava dostaneme VF

Príklady rezov DS z nášho príkladu

C1 = {B, z, D} VF: BzD; A * BzD

C2 = { C, E, z, -, F, G}

C3 = {C, 3, 4, ., 2, 5, z, -, 1, 3}

Page 16: Bezkontextové gramatiky a jazyky

Ľavá a pravá derivácia

Reprezentácia derivácie klasickou postupnosťou VF v derivácii sa robí systematickou deriváciou neterminálu v každom kroku derivácie

Deriváciou neterminálu prvého zľava dostávame – ľavú deriváciu

Deriváciou neterminálu prvého sprava dostávame – pravú deriváciu

Vetné formy v ľavej / pravej derivácii nazývame ľavé / pravé vetné formy

Page 17: Bezkontextové gramatiky a jazyky

Viacznačné gramatiky

Majme gramatiku G1 = ({ S }, {a, b, if, then, else}, P, S)P:S if b then S else SS if b then SS a

Do jazyka L(G1) patrí aj veta if b then if b then a else aPretože existuje derivácia

S if b then S if b then if b then S else S if b then if b then a else S if b then if b then a else a

Page 18: Bezkontextové gramatiky a jazyky

Jedinečnosť a nejedinečnosť derivácieOtázky: existuje k uvedenej vete jazyka L(G1) viac

derivácií ? Aj viac ľavých alebo pravých derivácií?

Môže to mať nejaké dôsledky?

Page 19: Bezkontextové gramatiky a jazyky

Príklad

Majme gramatiku pre zjednodušený AV

G2 = (N, T, P, S)

P:

E E + T | T

T T * F | F

F ( E ) | a | b | c

Zistime, či reťazec – výraz (a + b) * c

patrí do jazyka L(G2)

Page 20: Bezkontextové gramatiky a jazyky

(a + b) * c

Ľavá derivácia D1: E T T * F F * F ( E ) * F (E + T) * F (T + T) * F (F + T) * F (a + T) * F (a + F) * F (a + b) * F (a + b) * c

Daný reťazac patrí do jazyka L(G2).Pravá derivácia D2: E T T * F T * c F * c

( E ) * c ( E + T ) * c ( E + F ) * c ( E + b ) * c ( T + b ) * c ( F + b ) * c ( a + b ) * c

Aj táto derivácia ukazuje že daný reťazec je „výrazom“ a patrí do L(G2)

E E + T | T

T T * F | F

F ( E ) | a | b | c

Page 21: Bezkontextové gramatiky a jazyky

Reprezentácia derivačným stromom

E

TT * F

F

( E )

E +T

T

F

a

F

b

c

Page 22: Bezkontextové gramatiky a jazyky

Derivačný strom pre D2

Derivácii D2 zodpovedá rovnaký derivačný strom – strom s rovankou štruktúrou

Derivačný strom jasne ukazuje aj „viazanie“ operandov operátormi + a *.

Pozrime sa na deriváciu výrazu a + b * c Otázka? Ako sú teraz viazané operandy a

operátory

Page 23: Bezkontextové gramatiky a jazyky

a + b * c Derivácia

E E + T T + T F + T a + T a + T * F a + F * F a + b * F a + b * c

Page 24: Bezkontextové gramatiky a jazyky

a + b * c Derivačný strom

E

E + T

T

F

a

T *F

F

b

c

Page 25: Bezkontextové gramatiky a jazyky

a + b * c Derivačný strom

Z DS vidieť „správne“ viazanie operátorov a operandov

Otázka. Je jediný? Skúste pravú deriváciu

Page 26: Bezkontextové gramatiky a jazyky

Iná G pre jednoduchý AV

Majme gramatiku

G = ({E}, {+, *, (, ), a, b, c }, P, E)

P: E E + E | E * E | (E) | a | b | c

Zistime znova, či reťazec a + b * c patrí do jazyka L(G)

Page 27: Bezkontextové gramatiky a jazyky

Derivácie a + b * c

D1: E E + E a + E a + E * E a + b * E a + b * c - je to ľavá derivácia

D2: E E * E E + E * E a + E * E a + b * E a + b * c - je to tiež ľavá derivácia

Obe derivácie ukazujú že reťazec a + b * c patrí do jazyka L(G)

Otvorená je otázka viazanosti operátorov a operandov.

Lepšie to bude vidieť z derivačného stromu.

Page 28: Bezkontextové gramatiky a jazyky

Derivačný strom a + b * c

D1: E

E+

E

a E * E

b c

E

E * E

E + E

a b

c

D2

Page 29: Bezkontextové gramatiky a jazyky

Závery z reprezentácie derivácie

Derivačné stromy D1 a D2 k tomu istému výrazu – slovu jazyka majú rôznu štruktúru

D1 a D2 ukazujú rôznu viazanosť operátorov a operandov, čo má za následok rôzne významy daných výrazov

Page 30: Bezkontextové gramatiky a jazyky

Viacznačná gramatika df

BKG gramatika G = (N, T, P, S) je nejednoznačná – viacznačná, ak existuje aspoň jedno slovo w L(G) pre ktoré existuje viac derivačných stromov s odlišnou štruktúrou.

Ekvivalentne platí, že gramatika G je viacznačná ak existuje aspoň jedno slovo w L(G) pre ktoré existuje viac ľavých (pravých) derivácií.

Page 31: Bezkontextové gramatiky a jazyky

Príklad s príkazom if

Majme gramatiku G1 = ({ S }, {a, b, if, then, else}, P, S)P: S if b then S else S S if b then S S a

Do jazyka L(G1) patrí aj veta if b then if b then a else aK tejto vete však existujú nasledujúce dve ľavé derivácie a teda je

viacznačná: D1: S if b then S if b then if b then S else S if b then if b then a else S if b then if b then a else a D2: S if b then S else S if b then if b then S else S if b then if b then a else S if b then if b then a else a

Page 32: Bezkontextové gramatiky a jazyky

Nejednoznačnosť gramatík a jazyky Nejednoznačnosť gramatiky sa nemusí

týkať jazyka Gramatiku možno často transformovať na

jednoznačnú Jazyky pre ktoré nemožno gramatiku

transformovať na jednoznačnú nazývame inherentne nejednoznačné

Page 33: Bezkontextové gramatiky a jazyky

Transformácia gramatík

Existencia ekvivalentných gramatík, t.j. gramatík špecifikujúcich ten istý jazyk, vedie na myšlienku „prechodu“ alebo transformáciu jednej gramatiky na druhú – ekvivalentnú gramatiku.

Rozoberieme si niektoré algoritmy zisťujúce vlastnosti gramatík a jazykov i transformáciu pri zachovaní ekvivalentnosti.

Page 34: Bezkontextové gramatiky a jazyky

Je L(G) neprázdny ?

Vstup: BKG Výstup: Áno – ako L(G) , inak NiePostup: Algoritmus A1

1. N0 := ; i := 1;

2. Ni := { A /A α P, α (Ni-1 T)*} Ni-1

3. Ak Ni Ni-1 tak i := i + 1 a prejdi na krok 1 inak Ne := Ni

4. Ak S Ne tak Áno inak Nie

Page 35: Bezkontextové gramatiky a jazyky

Príklad

Daná je gramatikaG = ({A, B, C, D, E, F, G}, { +, -, ., 0, 1, …, 9, z}, P, A)P: A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9Treba zistiť, či L(G) je neprázdny.

Page 36: Bezkontextové gramatiky a jazyky

Postup

N0 = N1 = {C, G} N2 = {C, G, F} N3 = {C, G, F, D, E} N4 = {C, G, F, D, E, B} N5 = {C, G, F, D, E, B, A} N6 = {C, G, F, D, E, B, A} N5 = N6 algoritmus končí a keďže A N6 jazyk L(G) je

neprázdny.

P: A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9

Page 37: Bezkontextové gramatiky a jazyky

Príklad

Majme „modifikovanú“ gramatiku z predchádzajúceho príkladu (nemáme čísla so znamienkom, tak „vypustíme“ toto pravidlo)

G = ({A, B, C, D, E, F, G}, { +, -, ., 0, 1, …, 9, z}, P, A)P: A B | BzDB CED CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9

Page 38: Bezkontextové gramatiky a jazyky

Postup

N0 = N1 = {G}

N2 = {G, F}

N3 = {G, F, E}

N4 = {G, F, E}

N3 = N4 algoritmus končí a keďže A N4 jazyk L(G) je prázdny.

P: A B | BzDB CED CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9

Page 39: Bezkontextové gramatiky a jazyky

Nedostupné a nadbytočné symbolyDefinícia gramatiky ako štvorice (N, T, P, S)

evokuje (právom) otázku, či sa všetky symboly „využijú“

Druhým dôvodom je, že gramatika vymedzuje gramatické pravidlá jazyka, ktorý špecifikuje a tie vedú priamo na jej množinu pravidiel. Preto sa často hovorí, že- neterminály sú tie symboly, ktoré sa objavia aspoň raz

na ľavej strane niektorého pravidla, ostatné sa implicitne považujú za terminály

Page 40: Bezkontextové gramatiky a jazyky

Nedostupné symboly

Nech G = (N, T, P, S) je BKG. Potom symbol X N T nazývame nedostupným, ak sa neobjaví v žiadnej VF gramatiky G. Teda neexistuje také αXβ, že platí A + αXβ, pre nejaké α, β z (N T)* .

Takýto symbol možno z G vylúčiť.

Page 41: Bezkontextové gramatiky a jazyky

Vylúčenie nedostupných symbolov – Algoritmus A2Vstup: BKG G = (N, T, P, S)

Výstup: G’ = (N’, T’, P’, S), pre ktorú platí:- L(G’) = L(G)- pre všetky X N’ T’ existuje také

α, β z (N’ T’)* , že: S G’* αXβ

Page 42: Bezkontextové gramatiky a jazyky

Postup

1. V0 := { S } ; i := 1;

2. Vi := { X / A αXβ P, A Vi-1 } Vi-1

3. Ak Vi Vi-1 , potom i := i + 1 a pokračuj krokom 2. Inak

N’ := Vi N

T’ := Vi T

P’ := {A α / A Vi , α Vi* , A α P }

G’ = (N’, T’, P’, S)

Page 43: Bezkontextové gramatiky a jazyky

Nadbytočné symboly

Nech G = (N, T, P, S) je BKG. Potom symbol X N T nazývame nadbytočným, ak neexistuje derivácia

S * wXy * wxy, pre w, x, y T*

Page 44: Bezkontextové gramatiky a jazyky

Vylúčenie nadbytočných symbolov – algoritmus A3Vstup: BKG G = (N, T, P, S), taká, že L(G) Výstup: G’ = (N’, T’, P’, S), pre ktorú platí:

- L(G’) = L(G)- žiadny symbol z N’ T’ nie je nadbytočný

Page 45: Bezkontextové gramatiky a jazyky

Postup

1. Použitím algortimu A1 získame množinu neterminálov Ne, z ktorých možno generovať terminálne reťazce. Vytvoríme gramatiku G1 = (Ne , T, P1, S ), kde

P1 = {A α / A Ne , α (Ne T) *, A α P}

Vylúčime tým tie neterminály, z ktorých nemožno generovať terminálne reťazce

2. Použitím algoritmu A2 na G1vylúčime symboly, ku ktorým sa nemôžeme dostať a dostaneme gramatiku G’ = (N’, T’, P’, S)

Page 46: Bezkontextové gramatiky a jazyky

Príklad

Majme gramatiku

G = ( {S, A, B}, { a, b}, P, S)

P: S a | A

A AB

B b

Aplikáciou algoritmu A3 vylúčime nadbytočné symboly.

Page 47: Bezkontextové gramatiky a jazyky

Postup

Krok 1. Aplikácia A3 – vytvoríme množinu neterminálov, Ne, z ktorých možno generovať terminálne reťazce.

N0 =

N1 = {B, S}

N2 = {B, S}

N1 = N2 = > Ne = {B, S}

G1 = ( {S, B}, { a, b}, P1, S)

P1 : S a B b

Page 48: Bezkontextové gramatiky a jazyky

Postup Krok 2

Krok2. Aplikácia A2 – vylúčime nedostupné symboly

V0 = { S }

V1 = { S, a }

V2 = { S, a }

Výslednou gramatikou bude gramatika

G’ = ({ S }, { a }, { S a }, S )

Page 49: Bezkontextové gramatiky a jazyky

Gramatika bez e – pravidla

BKG G = (N, T, P, S) budeme nazývať gramatikou bez e pravidla , ak P neobsahuje pravidlo A e, okrem prípadného pravidla S e

Niekedy je výhodné gramatiku transformovať tak, aby sme dostali ekvivalentnú gramatiku, ale bez e pravidla. Umožňuje nám to algoritmus A4.

Page 50: Bezkontextové gramatiky a jazyky

Vylúčenie e pravidiel

Vstup : BKG G = (N, T, P, S)

Výstup: ekvivalentná gramatika

G’ = (N’, T, P’, S)

bez e pravidiel

Page 51: Bezkontextové gramatiky a jazyky

Postup

1. Analogický ako v algoritme A3 – vytvoríme množinu neterminálov, Ne, z ktorých možno generovať prázdny reťazec - e.

Ne = { A / A N, A G+ e }

2. Vytvorenie P’:

Page 52: Bezkontextové gramatiky a jazyky

Vytvorenie P’

a) Ak A α0B1α1B2α2 … Bkαk P pre k 0, a pre 1 i k je Bi Ne , ale žiadny symbol v αj nie je v Ne pre 0 j k , potom do P’ vložíme všetky pravidlá tvaru:

A α0X1α1X2α2 … Xkαk ,

kde Xi je buď Bi alebo e, s prípadnou výnimkou pravidla A e .

b) Ak S Ne , pridáme do P’ pravidlá: S’ S, S’ e, kde S’ bude nový začiatočný symbol gramatiky G’ a N’ = N

{ S’ }. Inak sa N’ = N, S’ = S.3. G’ = (N’, T, P’, S’)

Page 53: Bezkontextové gramatiky a jazyky

Príklad

Majme gramatikuG = ({A, B, C, D, E, F, G}, { +, -, ., 0, 1, z}, P, A)P: A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1

Page 54: Bezkontextové gramatiky a jazyky

Úprava

N0 = N1 = { C }

N2 = { C }Úprava gramatikyA B | BzDB CE | EC + | -D CF | FE F. | F.F | .FF G | FGG 0 | 1

Page 55: Bezkontextové gramatiky a jazyky

Premenovávacie pravidlo

Pravidlo gramatiky tvaru A B , kde A, B N nazývame premenovávacie

Takéto pravidlo sa dá z gramatiky vylúčiť a vytvoriť ekvivaletnú gramatiky bez premenovávacích pravidiel.

Page 56: Bezkontextové gramatiky a jazyky

Postup

Vstup: BKG G bez e-pravidiel Výstup: ekvivaletná gramatika G’ bez premenovávacích pravdiel.

1. Pre každé A N vytvor množinu NA = { B / A * B} takto:

a. N0 = { A } ; i := 1;

b. Ni = { C / B C P, B Ni-1 } Ni-1 ;

c. ak Ni Ni-1 tak i := i + 1 a pokračuje na b.

inak NA = Ni

2. Vytvor P’ takto: Pre všetky A také, že B NA a pre všetky pravidlá B α P, ktoré nie sú premenovávacie, vlož do P’ pravidlá A α

3. G’ = (N, T, P’, S)

Page 57: Bezkontextové gramatiky a jazyky

Príklad

Majme gramatiku G = (N, T, P, S)

P: E E + T | T

T T * F | F

F ( E ) | a

Transformácia:

NE = {E, T, F}

NT = {T, F}

NF = {F}

Page 58: Bezkontextové gramatiky a jazyky

Vlastná úprava

E E + T | T * F | ( E ) | a

T T * F | ( E ) | a

F ( E ) | a

Page 59: Bezkontextové gramatiky a jazyky

Cyklus

Ak G = (N, T, P, S) je BKG, potom cyklom nazývame deriváciu A + A

Cyklus vzniká v dôsledku používania e-pravidiel a premenovávacích pravidiel.

Cyklus možno z gramatiky odstrániť vylúčením „príčiny“, teda e- pravidiel a premenovávacích pravidiel.

Page 60: Bezkontextové gramatiky a jazyky

Vlastná gramatika

BKG budeme nazývať vlastnou gramatikou, ak je bez cyklov, e-pravidiel a bez nadbytočných symbolov

Page 61: Bezkontextové gramatiky a jazyky

Normálne formy BKG

Normálny tvar BKG je taký tvar BKG, do ktorého možno transformovať ľubovoľnú inú gramatiku pri zachovaní ekvivalentnosti

Zvyčajne má určité vlastnosti Najčastejšie sa stretávame s normálnym tvarom - Chomského – CHNT – ponúka redukovanú

dľžku pravých strán pravidiel - Greibachovej - GNT – je bez ľavej rekurzie,

dokonca každá pravá strana pravidla začína terminálom

Page 62: Bezkontextové gramatiky a jazyky

Chomského NT

BKG G = (N, T, P, S) je v CHNT ak každé pravidlo z P má jeden z nasledujúcich tvarov

1. A BC kde A, B, C N2. A a kde A N, a T3. S e ak e L(G), pričom S sa

nenachádza na pravej strane žiadneho pravidla.

Page 63: Bezkontextové gramatiky a jazyky

Greibachovej NT

BKG G = (N, T, P, S) bez e-pravidiel, až na prípad S e ak e L(G), pričom S sa nenachádza na pravej strane žiadneho pravidla, je v GNT ak každé pravidlo z P tvar

A aα

Kde α N*, a T

Page 64: Bezkontextové gramatiky a jazyky

Zásobníkové automaty

Umožňujú špecifikovať BKJ akceptačným spôsobom Používajú sa ako model syntaktickej analýzy pre BKJ Analýza sa robí simuláciou ľavej alebo pravej

derivácie, pričom simulácia pravej derivácie sa robí pomocou inverznej relácie derivácie – redukcie

Použitie ZA ako modelov SA vedie na ZA, ktorý umožňuje operovať nad reťazcom symbolov ktoré sú na vrchu zásobníka a voláme ho - Rozšírený ZA

Page 65: Bezkontextové gramatiky a jazyky

Zásobníkové automaty df

Zásobníkovým automatom budeme nazývať sedmicu

H = (Q, T, Z, δ , q0 , z0, F) kde

Q je množina stavov,

T je množina vstupných symbolov – vstupná abeceda

Z je množina symbolov zásobníka

q0 je začiatočný stav, q0 Q

z0 je začiatočný symbol zásobníka

F je množina koncových stavov

δ je zobrazenie Q x (T { e }) x Z 2Q x Z*

Page 66: Bezkontextové gramatiky a jazyky

Poznámky

Zásobníkový automat (ZA) je vo všeobecnosti nedeterministický

ZA umožňuje e-prechody – vstup sa neberie do úvahy ( nič sa ani v danom prechode zo vstupu neakceptuje)

V každom kroku (prechode) generuje - na vrch zásobníka reťazec symbolov zásobníka,

možno aj prázdny reťazec (Z*)Činnosť sa aj v tomto prípade definuje pomocou

prechodového zobrazenia

Page 67: Bezkontextové gramatiky a jazyky

Konfigurácia ZA

Nech H = (Q, T, Z, δ , q0 , z0, F) je ZA. Potom nad Q x T* x Z* definujeme konfiguráciu ZA H ako trojicu (q, u, ) kde

q Q u T* , Z* Začiatočná konfigurácia: (q0, i, z0), kde i je vstupný reťazec

Koncová konfigurácia: (qf , e, )

kde qf F je koncový stav

Page 68: Bezkontextové gramatiky a jazyky

Relácia prechodu

Nech H = (Q, T, Z, δ , q0 , z0, F) je ZA. Potom nad množinou konfigurácií Q x T* x Z* definujeme reláciu prechodu nasledujúcim spôsobom.

Ak a T { e } ; x T*; z Z ; , Z* ; Potom (q, ax, z) (r, x, )práve vtedy, ak δ(q, a, z) obsahuje (r, )Analogický ako pre KA možno definovať stupeň a uzávery

relácie prechodu n , * , +

Page 69: Bezkontextové gramatiky a jazyky

Jazyk špecifikovaný ZA

Nech H = (Q, T, Z, δ , q0 , z0, F) je ZA. Potom jazyk L(H), špecifikovaný ZA H je definovaný takto:

L(H) = {w / (q0 , w, z0) * (qf , e, ),

qf F, w T* , Z*}Jazyk špecifikovaný ZA - s prázdnym zásobníkom

Le(H) = { w / (q0 , w, z0 ) * (qf , e, e ),

qf F, w T* }Poznámka: oba prípady špecifikujú tú istú triedu

jazykov. Existuje ekvivalentný ZA

Page 70: Bezkontextové gramatiky a jazyky

Rozšírený ZA

RZA bude operovať nad vrchom zásobníka, ale „vrchom“ bude prvých n symbolov na vrchu zásobníka

Potrebujeme ošetriť „obrátenú“ postupnosť symbolov v zásobníkua – robíme to tak, že v zápise bude vrch zásobníka vpravo

Ide teda iba o „rozšírenie“ ZA pre ošetrenie uvedenej potreby

Page 71: Bezkontextové gramatiky a jazyky

Rozšírený ZA df

Rozšíreným zásobníkovým automatom nazývame 7 – cu

H = (Q, T, Z, δ , q0 , z0, F)

Význam symbolov, okrem zobrazenia δ, zostáva nezmenený.

Konfigurácia je tiež definovaná rovnako.Zobrazenia δ je definované takto:δ : Q x (T { e }) x Z* 2

Q x Z*

Page 72: Bezkontextové gramatiky a jazyky

Relácia prechodu

Ak a T { e } ; x T*; , , Z* ;

Potom

(q, ax, ) (r, x, )

práve vtedy, ak δ(q, a, ) obsahuje (r, )Analogický ako pre KA možno definovať stupeň a

uzávery relácie prechodu n , * , +

Page 73: Bezkontextové gramatiky a jazyky

Vzťah ZA k BKG

Nech G = (N, T, P, S) je BKG. Potom existuje ZA M = (Q, T, Z, δ , q0 , z0, F) s vlastnosťou L(M) = L(G).

Konštrukcia je nasledujúca:

Q = {q}; F = {q}; q0 = q; z0 = S; T = T z gramatiky;

Z = { N T}

δ: 1. Ak A P, tak (q, ) δ(q, e, A)

2. δ(q, a, a) = {(q, e) } pre všetky a T.

Page 74: Bezkontextové gramatiky a jazyky

Vzťah RZA k BKG

Nech G = (N, T, P, S) je BKG. Potom existuje RZA M = (Q, T, Z, δ , q0 , z0, F) s vlastnosťou L(M) = L(G)

Konštrukcia je nasledujúca:

Q = {q, r}; F = {r}; q0 = q; T = T z gramatiky;

Z = { N T z0}δ: 1. Ak A P, tak (q, A) δ(q, e, ) 2. δ(q, a, e) = {(q, a) } pre všetky a T.

3. δ(q, e, z0S) = {(r, e) }

Page 75: Bezkontextové gramatiky a jazyky

Determinizmus

ZA i RZA sú vo všeobecnosti nedeterministické

Existujú podmienky determinizmu, ktorú sú nasledujúce:

Page 76: Bezkontextové gramatiky a jazyky

Deterministický ZA

ZA M = (Q, T, Z, δ , q0 , z0, F) nazývame determiniistický, ak pre každé q Q, x T a každé z Z platí jedna z nasledujúcich podmienok

1. | δ(q, x, z) | 1 a | δ(q, e, z) | = 2. | δ(q, x, z) | = a | δ(q, e, z) | 1

Page 77: Bezkontextové gramatiky a jazyky

DRZA

RZA M = (Q, T, Z, δ , q0 , z0, F) nazývame deterministický, ak pre každé q Q, x (T { e }), a , , Z* spľňa nasledujúce podmienky:

1. | δ(q, x, ) | 1

2. Ak δ(q, x, ) , δ(q, x, ) a potom ani jeden z reťazcov , nie je prefixom / postfixom jeden druhého (vzhľadom na orientáciu vrchu zásobníka

Page 78: Bezkontextové gramatiky a jazyky

OK