103
Preklad a jeho špecifikácia

Preklad a jeho špecifikácia

  • Upload
    slone

  • View
    39

  • Download
    3

Embed Size (px)

DESCRIPTION

Preklad a jeho špecifikácia. Prekladač a preklad. Prekladač sme si definovali ako: Program, ktorý transformuje (preloží) program V zdrojovom jazyku – zdrojový program Do cieľového jazyka – cieľový program V procese prekladu / v preklade vystupujú teda dva jazyky : zdrojový a cieľový - PowerPoint PPT Presentation

Citation preview

Page 1: Preklad a jeho špecifikácia

Preklad a jeho špecifikácia

Page 2: Preklad a jeho špecifikácia

Prekladač a preklad

Prekladač sme si definovali ako: Program, ktorý transformuje (preloží) program

– V zdrojovom jazyku – zdrojový program– Do cieľového jazyka – cieľový program

V procese prekladu / v preklade vystupujú teda dva jazyky : zdrojový a cieľový

Vstupným programom / jazykom prekladu budeme nazývať – zdrojový program / jazyk

Výstupným programom / jazykom prekladu budeme nazývať – cieľový program / jazyk

Page 3: Preklad a jeho špecifikácia

Preklad df

Nech T je vstupná a D výstupná abeceda. Potom formálnym prekladom jazyka L1 T* – zdrojového jazyka, do jazyka L2 D* – cieľového jazyka,

budeme nazývať reláciu C L1 x L2

Ak ( x, y ) C potom y nazývame výstupom alebo prekladom x.

Page 4: Preklad a jeho špecifikácia

Príklad

Ako príklady prekladov aritmetických výrazov z infixového zápisu (operátor je medzi operandami) do postfixového zápisu (operátor je za operandami) možno uviesť:

(a, a )( a + b, a b + )

( a + b * c, a b c * + )(( a + b ) * c , a b + c * )

( sin , sin )

Page 5: Preklad a jeho špecifikácia

Špecifikácia

Na špecifikáciu jazykov sme si definovali prostriedky:generatívne – gramatiky,

akceptačné – automaty.

Page 6: Preklad a jeho špecifikácia

Špecifikácia prekladu

Aj teraz hľadáme konečný mechanizmus / procedúruTeraz potrebuje špecifikovať dvojiceVieme ich však, ako jazyky, špecifikovať samostatneTúto znalosť využijeme.Hľadaný mechanizmus / procedúra bude

„kompozíciou“ špecifikácií vstupného a výstupného jazyka

Intuitívne je to OK: programu zodpovedá program, cyklu zodpovedá cyklus, podmienenému príkazu podmienený príkaz, ...

Page 7: Preklad a jeho špecifikácia

Spôsoby špecifikácie

Generatívne – bude generovať iba tie dvojice, ktoré sú prvkom danej relácie – prekladu

Akceptačne – procedúra rozhodne, či predložená dvojica je prvkom danej relácie – prekladu, alebo nie

Page 8: Preklad a jeho špecifikácia

Prostriedky špecifikácie prekladu

Generatívne – syntaxou riadené prekladové schémy SDTS

(Syntax Directed Translation Scheme)– Prekladové gramatiky

Akceptačne – prekladové automaty

Page 9: Preklad a jeho špecifikácia

SDTS

Syntaxou riadenou prekladovou schémou C (ďalej iba SDTS) budeme nazývať 5 ticu:

C = ( N, T, D, R, S )KdeN je množina neterminálov,T je množina vstupných terminálov - vstupná abecedaD je množina výstupných terminálov - výstupná

abecedaS je začiatočný symbol – je to neterminálR je množina pravidiel

Page 10: Preklad a jeho špecifikácia

Pravidlá SDTS

Pravidlá R SDTS majú tvar A , Kde : A N, ( N T)*

( N D)*

Pričom neterminály v sú permutáciou neterminálov a zodpovedajúce si neterminály v a sú jednoznačne definované hovoríme, že sú vzájomne viazané .

Page 11: Preklad a jeho špecifikácia

Prekladová forma

Analogický ako sme definovali vetnú formu, definujeme teraz prekladovú formu (zoberieme do úvahy dvojice)

Pre prekladovú schémuC = ( N, T, D, R, S )Budeme prekladovú formu definovať nad ( N T)* x ( N D)*

s jednoznačným priradením zodpovedajúcich si – viazaných - neterminálov. Definovať ju budeme rekurzívne takto:

Page 12: Preklad a jeho špecifikácia

Prekladová forma df

1. ( S, S) je prekladová forma a neterminály S si navzájom zodpovedajú – sú viazané,

2. Ak ( A, A ) je prekladová forma , v ktorej vyznačené neterminály A sú viazané a

A γ , γ je pravidlo z R, potom aj ( γ , γ ) je prekladová forma, v ktorej

neterminály v γ a γ sú viazané takým spôsobom ako v pravidle A γ , γ .

Poznámka: viazanosť neterminálov sa vyznačuje lexikograficky – v prípade nejasnosti budeme používať horný index

Page 13: Preklad a jeho špecifikácia

Derivácia

Nad prekladovým formami možno definovať reláciu derivácie takto:

Medzi prekladovými formami ( A, A ) a ( γ , γ ) platí relácia

derivácie práve vtedy, ak v pravidlách R je pravidloA γ , γPodobne ako v gramatikách zavedieme:Stupeň relácie k, reflexívny a tranzitívny uzáver * a

tranzitívny uzáver + .

Page 14: Preklad a jeho špecifikácia

Preklad špecifikovaný SDTS df

Nech C = ( N, T, D, R, S ) je SDTS. Potom preklad P(C), špecifikovaný SDTS C, je definovaný takto:

P(C) = { (x , y) / (S, S) * (x, y), x T*, y D*}

Page 15: Preklad a jeho špecifikácia

Príklad

Majme SDTS: C = ({E, T, F}, {+, *, a, (, ) }, {+, *, a}, R, E)R: E E + T, E T + E T, T T T * F, T F * T F, F F ( E ), E F a, aTáto SDTS špecifikuje preklad aritmetického výrazu z

infixového zápisu do postfixového zápisu.

Page 16: Preklad a jeho špecifikácia

Príklad prekladových foriem

(E, E) - definitoricky

(E + T, E T +) – pretože v R je pravidlo

E E + T, E T +

E E + T, E T +

E T, T

T T * F, T F *

T F, F

F ( E ), E

F a, a

Page 17: Preklad a jeho špecifikácia

Príklad derivácie

Preklad reťazca a * ( a + a ) možno získať nasledujúcou deriváciou. Ukážeme si aj viazanosť a potrebu ju vyznačiť.

(E, E) Treba rozhodnúť, ktoré pravidlo použiť

(T, T) (T * F, T F *) Viazanosť neterminálov je jasná

(F * F, F F *) Viazanosť neterminálov už nie je jasná. Vyznačíme ju.

(F1 * F2, F1 F2 *) (a * F, a F *) Viazanosť neterminálov je znova jasná

E E + T, E T +

E T, T

T T * F, T F *

T F, F

F ( E ), E

F a, a

Page 18: Preklad a jeho špecifikácia

Príklad derivácie Cont.

(a * (E) , a E *)

(a * (E + T), a E T + *)

(a * (T1 + T2) , a T1 T2 + * )

(a * (F + T) , a F T + *)

(a * (a + T) , a a T + *)

(a * (a + F) , a a F + *)

(a * (a + a) , a a a + *)

Prekladom reťazca a * (a + a) je reťazec a a a + *

E E + T, E T +

E T, T

T T * F, T F *

T F, F

F ( E ), E

F a, a

Page 19: Preklad a jeho špecifikácia

Preklad a vstupná a výstupná gramatika Vstupný a výstupný jazyk prekladu je

špecifikovaný gramatikou, ktorú tiež voláme vstupná a výstupná.

Ich vzťah k SDTS špecifikujúcej zodpovedajúci preklad je nasledujúci

Page 20: Preklad a jeho špecifikácia

SDTS a a vstupná a výstupná gramatikaNech C = ( N, T, D, R, S ) je SDTS. Potom

vstupnou / výstupnou gramatikou SDTS C nazývame gramatiky Gi , Go definované takto:

Gi = ( N, T, Pi, S)

Pi = {A / A , je v R }

Go = ( N, D, Po, S)

Po = {A / A , je v R }

Page 21: Preklad a jeho špecifikácia

Sémanticky jednoznačná SDTS

SDTS C = ( N, T, D, R, S ) je sémanticky jednoznačná, ak v R neexistujú žiadne dve pravidlá tvaru:

A , A ,

Page 22: Preklad a jeho špecifikácia

Jednoduchá SDTS

Nech C = ( N, T, D, R, S ) je SDTS. Potom SDTS C budeme nazývať jednoduchá SDTS, ak pre každé pravidlo A , platí, že viazané neterminálne symboly sú v rovnakom poradí v i v .

Preklad špecifikovaný jednoduchou SDTS nazývame jednoduchý syntaxou riadený prekld.

Poznámka: viazanosť neterminálov jednoduchej SDTS je priamočiara – daná kontextom.

Page 23: Preklad a jeho špecifikácia

Príklad

Preklad jazyka aritmetických výrazov v infixovom tvare do jazyka aritmetických výrazov v prefixovom tvare možno špecifikovať SDTS C:

C = ({E, T, F}, {+, *, a, (, ) }, {plus, krat, (, ), a}, R, E)

R: E E + T, plus (E , T) E T, T T T * F, krat (T , F ) T F, F F ( E ), E F a, a

Page 24: Preklad a jeho špecifikácia

Preklad (a + a) * a

(E, E)

(T, T)

(T * F, krat (T , F ))

(F * F, krat ( F, F))

(( E ) * F, krat ( E , F))

(( E + T) * F, krat ( (plus ( E , T) ), F))

(( T + T) * F, krat ( (plus ( T , T) ), F))

(( F + T) * F, krat ( (plus ( F , T) ), F))

E E + T, plus (E , T) E T, T T T * F, krat (T , F ) T F, F F ( E ), E F a, a

Page 25: Preklad a jeho špecifikácia

Preklad (a + a) * a Cont.

(( a + T) * F, krat ( (plus ( a , T) ), F))

(( a + F) * F, krat ( (plus ( a , F) ), F)) )

(( a + a) * F, krat ( (plus ( a , a) ), F))

(( a + a) * a, krat ( (plus ( a , a) ), a))

Page 26: Preklad a jeho špecifikácia

Regulárny preklad

Analogicky ako pri gramatikách, možno aj pri SDTS urobiť obmedzenia na pravidlá a dostať tak triedy prekladov.

Začneme tým najjednoduchším – regulárnym prekladom.

Spolu s ním zavedieme aj akceptačný spôsob špecifikácie prekladu – prekladový automat.

Aj pri prekladových automatoch budeme vychádzať zo špecifikácie jazyka.

Page 27: Preklad a jeho špecifikácia

Konečný prekladový automat

Konečným prekladovým automatom budeme nazývať šesticu

M = (Q, T, D, δ , q0 , F) kdeQ je (konečná) množina stavov,T je (konečná) množina vstupných symbolov – vstupná

abecedaD je (konečná) množina výstupných symbolov – výstupná

abeceda

q0 je začiatočný stav, q0 QF je množina koncových stavov δ je zobrazenie Q x (T { e }) 2Q x D

*

Page 28: Preklad a jeho špecifikácia

Poznámky

Konečný prekladový automat (KPA) je vo všeobecnosti nedeterministický

KPA 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 výstup reťazec výstupných terminálov, možno aj prázdny reťazec (D*)

Činnosť sa aj v tomto prípade definuje pomocou prechodového zobrazenia

Page 29: Preklad a jeho špecifikácia

Konfigurácia KPA

Nech M = (Q, T, D, δ , q0 , F) je KPA. Potom nad Q x T* x D* definujeme konfiguráciu KPA M ako trojicu (q, x, y) kde

q Q x T* , y D*

Začiatočná konfigurácia: (q0 , u, e), kde u je vstupný reťazec

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

kde qf F je koncový stav v je výstupný reťazec.

Page 30: Preklad a jeho špecifikácia

Relácia prechodu

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

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

prechodu n , * , +

Page 31: Preklad a jeho špecifikácia

Reprezentácia relácie prechodu

Analogická ako pri KA

- prechodovou tabuľkou,

- prvky sú dvojice, prípadne množiny dvojíc

- stavovým diagramom

- ak δ(q, i) obsahuje (p, o) ohodnotenie hrany z q do p je v tvare i / o (– vstup / výstup)

Page 32: Preklad a jeho špecifikácia

Preklad špecifikovaný KPA

Nech M = (Q, T, D, δ , q0 , F) je KPA. Potom preklad P(M) špecifikovaný KPA M je definovaný nasledujúcim spôsobom:

P(M) = {(u , v) / (q0 , u, e) * (qf , e, v) ;

u T* , v D* , qf F }

Preklad špecifikovaný KPA nazývame regulárny preklad.

Page 33: Preklad a jeho špecifikácia

Príklad

Majme KPA M = ({qn , qp , qf}, {0, 1 }, {0, 1}, , qp , {qf })

e 0 1

qn {(qf , 0)} {(qn , 0)} {(qp , 1)}

qp {(qf , 1)} {(qp , 0)} {(qn , 1)}

qf

Page 34: Preklad a jeho špecifikácia

Reprezentácia stavovým diagramom

qp

qn

qf

e / 0e / 1

0 / 0 1 / 1

1 / 1

0 / 0Štart

Page 35: Preklad a jeho špecifikácia

Činnosť

KPA M zisťuje paritu binárneho reťazca. Ako výstup dáva pôvodný reťazec doplnený „0“ v prípade nepárneho počtu „1“ –tiek, „1“ v prípade párneho počtu „1“ –tiek.

Činnosť si ukážeme pre vstupné reťazce 101 a 111

(qp , 101, e) (qn , 01, 1) (qn , 1, 10) (qp , e, 101) (qf , e, 1011)

e 0 1

qn {(qf , 0)} {(qn , 0)} {(qp , 1)}

qp {(qf , 1)} {(qp , 0)} {(qn , 1)}

qf

Page 36: Preklad a jeho špecifikácia

Preklad reťazca 111

(qp , 111, e)

(qn , 11, 1)

(qp , 1, 11)

(qn , e, 111)

(qf , e, 1110)

Page 37: Preklad a jeho špecifikácia

Determinizmus KPA

KPA M = (Q, T, D, δ , q0 , F) budeme nazývať deterministickým, ak pre všetky stavy z Q platí jedna z nasledujúcich podmienok

1. δ(q, a) obsahuje nanajvýš jeden prvok pre každé a T a δ(q, e) = , alebo

2. δ(q, e) obsahuje nanajvýš jeden prvok a δ(q, a) = pre každé a T

Page 38: Preklad a jeho špecifikácia

Príklad

Majme KPA M = ({q0 , q1 }, {+, -, . , 0, 1 }, {+, -, . , 0, 1}, , q0 , {q1 })

0 1 + - .

q0 (q0, e) (q1, 1) (q0, +) (q0, -) (q1, .)

q1 (q1, 0) (q1, 1) (q1, .)

Page 39: Preklad a jeho špecifikácia

Činnosť

KPA M vynecháva nevýznamné „0“ pred číslom zapísaným v binárnom tvare. Preklad reťazca –000101.01 je:

(q0 , –000101.01, e) (q0 , 000101.01, – ) (q0 , 00101.01, – )

(q0 , 0101.01, – ) (q0 , 101.01, – ) (q1 , 01.01, –1 ) (q1 , 1.01, –10 ) (q1 ,.01, –101 ) (q1 , 01, –101. ) (q1 , 1, –101.0 ) (q1 , e, –101.01 )

0 1 + - .

q0 (q0, e) (q1, 1) (q0, +) (q0, -) (q1, .)

q1 (q1, 0) (q1, 1) (q1, .)

Page 40: Preklad a jeho špecifikácia

Viac výstupov pre jeden vstup

KPA môže dávať pre jeden vstup aj viac výstupov.

Ak M = (Q, T, D, δ , q0 , F) je KPA, potom

M(x) = { y / (x, y) P(M) }

M(L) = M( x )X L

Page 41: Preklad a jeho špecifikácia

Viazanosť KA a KPA

Nech K = (Q, T, δ , q0 , F) je KA a

M = (Q, T, D, λ , q0 , F) je KPA

Potom automaty K a M nazývame viazanými, ak pre všetky (q, a) Q x T

δ( q, a ) = { p / ( p, b ) λ( q, a ), pre b D*}.

Page 42: Preklad a jeho špecifikácia

Vzájomný vzťah SDTS a KPA

Nech C = (N, T, D, R, S) je SDTS, ktorej vstupná i výstupná gramatika sú regulárne gramatiky, teda každé pravidlo z R má jeden z tvarov

C aB, bBC a, bKde C, B sú neterminály, a je vstupný, b výstupný

terminál,

Potom možno vytvoriť KPA M = (Q, T, D, δ , q0 , F) pre ktorý platí, že P (M) = P (C)

Page 43: Preklad a jeho špecifikácia

Konštrukcia

Konštrukcia:Q = N {A}, pričom A NT = TD = D

q0 = S F = { A } : pre všetky a T, b D , B N, C N platí: ak B a , b R tak (A , b) (B, a) ak B aC , bC P tak (C , b) (B, a) (A, a) = ø

Page 44: Preklad a jeho špecifikácia

Zásobníkové prekladové automatyZásobníkovým prekladovým automatom budeme nazývať osmicu

H = (Q, T, Z, D, δ , q0 , z0, F) kdeQ je množina stavov,T je množina vstupných symbolov – vstupná abecedaZ je množina symbolov zásobníkaD je množina výstupných symbolov – výstupná abeceda

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

z0 je začiatočný symbol zásobníkaF je množina koncových stavovδ je zobrazenie Q x (T { e }) x Z 2

Q x Z* x D*

Page 45: Preklad a jeho špecifikácia

Poznámky

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

ZPA 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 - na výstup reťazec výstupných terminálov, možno aj

prázdny reťazecČinnosť sa aj v tomto prípade definuje pomocou

prechodového zobrazenia

Page 46: Preklad a jeho špecifikácia

Konfigurácia ZPA

Nech H = (Q, T, Z, D, δ , q0 , z0, F) je ZPA. Potom nad Q x T* x Z* x D* definujeme konfiguráciu ZPA M ako štvoricu (q, u, , v) kde

q Q u T* , Z* , v D*

Začiatočná konfigurácia: (q0, i, z0, e), kde i je vstupný reťazec

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

kde qf F je koncový stav o je výstupný reťazec.

Page 47: Preklad a jeho špecifikácia

Relácia prechodu

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

Ak a T { e } ; x T*

y, w D* ; z Z ; , Z* ; Potom (q, ax, z, y) (r, x, , yw)práve vtedy, ak δ(q, a, z) obsahuje (r, , w)Analogický ako pre KPA možno definovať stupeň a uzávery relácie

prechodu n , * , +

Page 48: Preklad a jeho špecifikácia

Preklad

Nech H = (Q, T, Z, D, δ , q0 , z0, F) je ZPA. Potom preklad P(H), špecifikovaný ZPA H je definovaný takto:

P(H) = { (u, v) / (q0 , u, z0 , e) * (qf , e, , v),

qf F, u T* , Z* , v D* }Preklad s prázdnym zásobníkom

Pe(H) = { (u, v) / (q0 , u, z0 , e) * (qf , e, e , v),

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

prekladov. Existuje ekvivalentný ZPA

Page 49: Preklad a jeho špecifikácia

Príklad

Majme nasledujúci ZPA H:H = ({q}, {a, +, *}, {+, *, E}, {a, +, *}, δ, q, {q}) δ: δ(q, a, E) = {(q, e, a)} δ(q, +, E) = {(q, EE+, e)}

δ(q, *, E) = {(q, EE*, e)}

δ(q, e, +) = {(q, e, +)}

δ(q, e, *) = {(q, e, *)}KPA špecifikuje preklad z prefixového zápisu do

postfixového zápisu.

Page 50: Preklad a jeho špecifikácia

Preklad reťazca +*aaa

(q, +*aaa, E, e)

(q, *aaa, EE+, e)

(q, aaa, EE*E+, e)

(q, aa, E*E+, a)

(q, a, *E+, aa)

(q, a, E+, aa*)

(q, e, +, aa*a)

(q, e, e, aa*a+)

δ: δ(q, a, E) = {(q, e, a)} δ(q, +, E) = {(q, EE+, e)} δ(q, *, E) = {(q, EE*, e)} δ(q, e, +) = {(q, e, +)} δ(q, e, *) = {(q, e, *)}

Page 51: Preklad a jeho špecifikácia

Viac výstupov pre jeden vstup

Aj pri ZPA môže k jednému vstupu existovať viac výstupov

Nech H = (Q, T, Z, D, δ , q0 , z0, F) je ZPA. Potom

H(x) = { y / (x, y) P(H) }

H(L) = H( x )X L

Page 52: Preklad a jeho špecifikácia
Page 53: Preklad a jeho špecifikácia

Viazanosť ZA a ZPA

Nech M = (Q, T, Z, δ , q0 , F) je ZA a

H = (Q, T, D, Z, λ , q0 , z0, F) je ZPA

Potom automaty M a H nazývame viazanými, ak pre všetky (q, a, z) Q x (T { e }) x Z

δ( q, a, z ) = {( p, ) / ( p, , y ) λ( q, a, z ),

pre y D*}.

Page 54: Preklad a jeho špecifikácia

Vzájomný vzťah SDTS a ZPA

Nech C = (N, T, D, R, S) je jednoduchá SDTS. Potom možno vytvoriť ZPA

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

pre ktorý platí, že P (H) = P (C)

Page 55: Preklad a jeho špecifikácia

Konštrukcia

Konštrukcia:

Q = {q}

T = T

D = D

Z = N T D ; D T = (ak nie prekódujeme)q0 = q

z0 = S

F = { q }

Page 56: Preklad a jeho špecifikácia

Konštrukcia

Keďže SDTS je jednoduchá, každé pravidlo má tvar:

A x0B1x1 ... Bnxn , y0B1y1 …Bnyn ,

kde xi T*, yi D*, BiN

: 1. Ak A x0B1x1 ... Bnxn , y0B1y1 …Bnyn R

tak (q, e, A) obsahuje

(q, e, x0y0B1x1y1 ... Bnxnyn , e)

2. (q, a, a) obsahuje (q, e, e) pre všetky a T

3. (q, b, e) obsahuje (q, e, b) pre všetky b D

Page 57: Preklad a jeho špecifikácia

Príklad

Majme SDTS:

C = ({E, T, F}, {+, *, a, (, ) }, {+’, *’, a’}, R, E)

R: E E + T, E T +’

E T, T

T T * F, T F *’

T F, F

F ( E ), E

F a, a’

Page 58: Preklad a jeho špecifikácia

Konštrukcia ZPA

: 1. (q, e, E) = {(q, e, E+T+’), (q, e, T)}

(q, e, T) = {(q, e, T*F*’), (q, e, F)}

(q, e, F) = {(q, e, (E)), (q, e, aa’)}

2. (q, x, x) = { (q, e, e)} pre x {+,*, a, (, )}

3. (q, b, e) = {(q, e, b)} pre b {+’, *’, a’}

Page 59: Preklad a jeho špecifikácia

Preklad reťazca a + a * a

SDTS C:

(E, E)

(E+T, ET+’) (T+T, TT+’) (F+T, FT+’) (a+T, a’T+’) (a+T*F, a’TF*’+’) (a+F*F, a’FF*’+’) (a+a*F, a’a’F*’+’) (a+a*a, a’a’a*’+’)’

Ako vidieť, ide skutočne o preklad z infixu do postfixu

E E + T, E T +’

E T, T

T T * F, T F *’

T F, F

F ( E ), E

F a, a’

Page 60: Preklad a jeho špecifikácia

ZPA

(q, a+a*a, E, e) (q, a+a*a, E+T+’, e) (q, a+a*a, T+T+’, e) (q, a+a*a, F+T+’, e) (q, a+a*a, aa’+T+’, e) (q, +a*a, a’+T+’, e) (q, +a*a, +T+’, a’ ) (q, a*a, T+’, a’ ) (q, a*a, T*F*’+’, a’ ) (q, a*a, F*F*’+’, a’ )

1. (q, e, E) = {(q, e, E+T+’), (q, e, T)}

(q, e, T) = {(q, e, T*F*’), (q, e, F)}

(q, e, F) = {(q, e, (E)), (q, e, aa’)}

2. (q, x, x) = { (q, e, e)} pre x {+,*, a, (, )}

3. (q, b, e) = {(q, e, b)} pre b {+’, *’, a’}

Page 61: Preklad a jeho špecifikácia

ZPA Cont

(q, a*a, aa’*F*’+’, a’ ) (q, *a, a’*F*’+’, a’ ) (q, *a, *F*’+’, a’ a’) (q, a, F*’+’, a’ a’) (q, a, aa’*’+’, a’ a’) (q, e, a’*’+’, a’ a’) (q, e, *’+’, a’ a’ a’) (q, e, +’, a’ a’ a’ *’) (q, e, e, a’ a’ a’ *’ +’) Vidíme, že výstup je aj teraz postfixom vstupného reťazca

1. (q, e, E) = {(q, e, E+T+’), (q, e, T)}

(q, e, T) = {(q, e, T*F*’), (q, e, F)}

(q, e, F) = {(q, e, (E)), (q, e, aa’)}

2. (q, x, x) = { (q, e, e)} pre x {+,*, a, (, )}

3. (q, b, e) = {(q, e, b)} pre b {+’, *’, a’}

Page 62: Preklad a jeho špecifikácia

Použitie SDTS a ZPA pri rozbore

Rozbor je jednou z reprezentácií derivácie.Rozbor je postupnosť pravidiel použitých v deriváciiVýznačné derivácie a rozbory:Ľavý rozbor – postupnosť čísel pravidiel použitých v

ľavej derivácii.Pravý rozbor – obrátená postupnosť čísel pravidiel

použitých v pravej derivácii.Poznámka: dôvod „obrátenej“ postupnosti si

vysvetlíme pri syntaktickej analýze

Page 63: Preklad a jeho špecifikácia

Konštrukcia SDTS pre špecifikáciu rozboruNech G =(N, T, P, S ) je BKG s očíslovanými

pravidlami od 1 po n. Potom možno skoštruovať SDTS C, ktorá umožňuje generovať rozbor – ľavý alebo pravý, podľa konštrukcie.

Page 64: Preklad a jeho špecifikácia

Konštrukcia SDTS pre ľavý rozbor v GG =(N, T, P, S ) –je BKG s očíslovanými

pravidlami od 1 po n.

Cl = (N, T, D, R, S)

D: {1, 2, … , n}

R: ak A je i – te pravidlo v P, potom

A , i ’ je pravidlo v R, kde ’ je s vynechanými terminálmi

Page 65: Preklad a jeho špecifikácia

Preklad špecifikovaný Cl

P(Cl ) = { (w, ) / S * w, w T*}, * je

ľavá derivácia s použitím postupnosti čísel pravidiel .

Page 66: Preklad a jeho špecifikácia

Príklad

Majme gramatiku G: G = ({E, T, F}, {+, *, a, (, ) }, P, E)P: 1. E E + T 2. E T 3. T T * F 4. T F 5. F ( E ) 6. F a

Potom zodpovedajúca SDTS Cl , pre generovanie ľavého rozboru ma tvar

Page 67: Preklad a jeho špecifikácia

SDTS pre G

Cl = ({E, T, F},{+, *, a, (, )}, {1, 2, … , n}, R, E)

R: E E + T, 1ET

E T, 2T

T T * F, 3TF

T F, 4F

F ( E ), 5E

F a, 6

Page 68: Preklad a jeho špecifikácia

Činnosť pre a *(a + a)

Ľavý rozbor v G: (číslo použitého pravidla je pri symbole derivácie)E 2T 3T*F 4F*F 6 a*F 5a*(E) 1 a*(E+T) 2 a*(T+T) 4 a*(F+T) 6 a*(a+T) 4 a*(a+F) 6 a*(a+a)Ľavý rozbor reťazca a*(a+a) je postupnosť čísel pravidiel použitých v ľavej

derivácii, teda:23465124646

E E + T, 1ET

E T, 2T

T T * F, 3TF

T F, 4F

F ( E ), 5E

F a, 6

Page 69: Preklad a jeho špecifikácia

Použitie SDTS

(E, E) (T,2T) (T*F,23TF) (F*F,234FF) (a*F,2346F) (a*(E),23465E) (a*(E+T),234651ET) (a*(T+T),2346512TT) (a*(F+T),23465124FT) (a*(a+T),234651246T) (a*(a+F),2346512464F) (a*(a+a),23465124646)

Výstupom je aj teraz ľavý rozbor

E E + T, 1ET

E T, 2T

T T * F, 3TF

T F, 4F

F ( E ), 5E

F a, 6

Page 70: Preklad a jeho špecifikácia

Ľavý rozbor ako výstup ZPA

Pre gramatiku možno vytvoriť aj ZPA, ktorý špecifikuje preklad do rozboru – ľavého i pravého, podľa konštrukcie.

Page 71: Preklad a jeho špecifikácia

ZPA pre ľavý rozbor

G =(N, T, P, S ) –je BKG s očíslovanými pravidlami od 1 po n. Potom ZPA H

Hl = ({q}, T, N T ,{1, 2, … , n}, δ , q, S, {q})

δ: δ(q, e, A) obsahuje (q, , i) ak A je i – te

pravidlo v P

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

Page 72: Preklad a jeho špecifikácia

Preklad špecifikovaný ZPA Hl

G =(N, T, P, S ) –je BKG s očíslovanými pravidlami od 1 po n, Hl zodpovedný ZPA, potom

P(Hl) = { (w, ) / (q, w, S, e) * (q, e, e, ) , w T*, je ľavý rozbor, teda platí S * w }

Poznámka: ZPA Hl nazývame aj ľavý rozkladač pre G

Page 73: Preklad a jeho špecifikácia

Príklad

Majme gramatiku G: G = ({E, T, F}, {+, *, a, (, ) }, P, E)P: 1. E E + T 2. E T 3. T T * F 4. T F 5. F ( E ) 6. F a

Potom zodpovedajúci ZPA Hl , pre špecifikáciu ľavého rozboru ma tvar

Page 74: Preklad a jeho špecifikácia

ZPA pre G

Hl = ({q}, T, N T ,{1, 2, … , n}, δ , q, E, {q})

δ: 1. (q, e, E) = {(q, E+T, 1), (q, T, 2)}

(q, e, T) = {(q, T*F, 3), (q, F, 4)}

(q, e, F) = {(q, (E), 5), (q, a, 6)}

2. (q, x, x) = { (q, e, e)} pre x T

Page 75: Preklad a jeho špecifikácia

Činnosť pre reťazec (a + a ) * a(q, (a + a ) * a, E, e) (q, (a + a ) * a, T, 2) (q, (a + a ) * a, T*F, 23) (q, (a + a ) * a, F*F, 234) (q, (a + a ) * a, (E)*F, 2345) (q, a + a ) * a, E)*F, 2345) (q, a + a ) * a, E+T)*F, 23451) (q, a + a ) * a, T+T)*F, 234512) (q, a + a ) * a, F+T)*F, 2345124) (q, a + a ) * a, a+T)*F, 23451246)

1. (q, e, E) = {(q, E+T, 1), (q, T, 2)}

(q, e, T) = {(q, T*F, 3), (q, F, 4)}

(q, e, F) = {(q, (E), 5), (q, a, 6)}

2. (q, x, x) = { (q, e, e)} pre x T

Page 76: Preklad a jeho špecifikácia

Činnosť Cont

(q, + a ) * a, +T)*F, 23451246) (q, a ) * a, T)*F, 23451246) (q, a ) * a, F)*F, 234512464) (q, a ) * a, a)*F, 2345124646) (q, ) * a, )*F, 2345124646) (q, * a, *F, 2345124646) (q, a, F, 2345124646) (q, a, a, 23451246466) (q, e , e , 23451246466)

1. (q, e, E) = {(q, E+T, 1), (q, T, 2)}

(q, e, T) = {(q, T*F, 3), (q, F, 4)}

(q, e, F) = {(q, (E), 5), (q, a, 6)}

2. (q, x, x) = { (q, e, e)} pre x T

Page 77: Preklad a jeho špecifikácia

Rozšírený ZPA

Potrebujene ošetriť „obrátenú“ postupnosť symbolov v zásobníku (ako pri RZA)

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

RZPA bude operovať nad vrchom zásobníka, ale „vrchom“ bude prvých n symbolov na vrchu zásobníka a vrch bude v zápise vpravo

Ovizoval som potrebu pri syntaktickej analýze – tam to viac rozoberieme

Page 78: Preklad a jeho špecifikácia

Rozšírený ZPA df

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

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

Význam symbolov, akrem zobrazenia δ, zostáva nezmenený

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

Q x Z* x D*

Page 79: Preklad a jeho špecifikácia

Relácia prechodu

Ak a T { e } ; x T*

y, w D* ; , , Z* ;

Potom

(q, ax, , y) (r, x, , yw)

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

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

Page 80: Preklad a jeho špecifikácia

RZPA pre pravý rozbor

G =(N, T, P, S ) –je BKG s očíslovanými pravidlami od 1 po n. Potom ZPA Hp

Hp = ({q}, T, N T {#} ,{1, 2, … , n}, δ , q, #, {q})Vrch zásobníka je vpravo

δ: 1. δ(q, e, ) obsahuje (q, A, i) ak A je i – te pravidlo v P 2. δ(q, a, e) = {(q, a, e)} pre všetky a T 3. δ(q, e, #S) = {(q, e, e)}

Page 81: Preklad a jeho špecifikácia

Preklad špecifikovaný RZPA Hp

G =(N, T, P, S ) –je BKG s očíslovanými pravidlami od 1 po n, Hp zodpovedajúci ZPA, potom

P(Hp) = { (w, ) / (q, w, # , e) * (q, e, e, ) , w T*, je pravý rozbor, teda platí S *w }

Poznámka: ZPA Hp nazývame aj pravý rozkladač pre G

Page 82: Preklad a jeho špecifikácia

Príklad

Majme gramatiku G: G = ({E, T, F}, {+, *, a, (, ) }, P, E)P: 1. E E + T 2. E T 3. T T * F 4. T F 5. F ( E ) 6. F a

Potom zodpovedajúci ZPA Hp , pre špecifikáciu pravého rozboru ma tvar

Page 83: Preklad a jeho špecifikácia

RZPA pre G

Hp = ({q}, T, N T {#} ,{1, 2, … , n}, δ , q, #, {q})

δ: (q, e, E+T) = {(q, E, 1)}

(q, e, T) = {(q, E, 2)}

(q, e, T*F ) = {(q, T, 3)}

(q, e, F) = {(q, T, 4)}

(q, e, (E)) = {(q, F, 5)}

(q, e, a) = {(q, F, 6)}

(q, x, e) = { (q, x, e)} pre x T

(q, e, #E) = {(q, e, e)}

Page 84: Preklad a jeho špecifikácia

Činnosť pre reťazec (a + a ) * a(q, (a + a ) * a, #, e) (q, a + a ) * a, # (, e) (q, + a ) * a, # (a, e) (q, + a ) * a, # (F, 6) (q, + a ) * a, # (T, 64) (q, + a ) * a, # (E , 642) (q, a ) * a, # (E + , 642) (q, ) * a, # (E + a , 642) (q, ) * a, # (E + F , 6426)

(q, e, E+T) = {(q, E, 1)}

(q, e, T) = {(q, E, 2)}

(q, e, T*F ) = {(q, T, 3)}

(q, e, F) = {(q, T, 4)}

(q, e, (E)) = {(q, F, 5)}

(q, e, a) = {(q, F, 6)}

(q, x, e) = { (q, x, e)} pre x T

(q, e, #E) = {(q, e, e)}

Page 85: Preklad a jeho špecifikácia

Činnosť pre reťazec (a + a ) * a Cont(q, ) * a, # (E + T , 64264) (q, ) * a, # (E , 642641) (q, * a, # (E ) , 642641)(q, * a, # F , 6426415)(q, * a, # T , 64264154)(q, a, # T *, 64264154)(q, e, # T * a, 64264154)(q, e, # T * F, 642641546)(q, e, # T , 6426415463)(q, e, # E , 64264154632)(q, e, e , 64264154632)

(q, e, E+T) = {(q, E, 1)}

(q, e, T) = {(q, E, 2)}

(q, e, T*F ) = {(q, T, 3)}

(q, e, F) = {(q, T, 4)}

(q, e, (E)) = {(q, F, 5)}

(q, e, a) = {(q, F, 6)}

(q, x, e) = { (q, x, e)} pre x T

(q, e, #E) = {(q, e, e)}

Page 86: Preklad a jeho špecifikácia

Prekladové gramatiky

Vychádzajú z predpokladov: Jednoduchej SDTSKaždé pravidlo má tvar:

A x0B1x1 ... Bnxn , y0B1y1 …Bnyn , Množiny vstupných a výstupných symbolov sú

dizjunktné T D = Potom možno každé pravidlo SDTS písať ako

pravidlo gramatiky, teda v tvare

A x0y0B1x1y1 ... Bnxnyn

Page 87: Preklad a jeho špecifikácia

Prekladové gramatiky Df

Prekladovou gramatikou (PG) budeme nazývať BKG Gp = ( N, T D, P, S ) pričom T D =

Vstupným / výstupným homomorfizmom

hi / ho prekladovej garmatiky Gp nazývame zobrazenie

hi : N T D N T {e }

ho : N T D N D {e }

Page 88: Preklad a jeho špecifikácia

Vstupný a výstupný homomorfizms hi(X) = X pre X N T ; Inak hi(X) = e

ho(X) = X pre X N D ; Inak ho(X) = e

Rozšírenie na definičné obory (N T D )*

hi(e) = ho(e) = e

hi(X) = hi(X) hi()

ho(X) = ho(X) ho()

X N T D

(N T D )*

Page 89: Preklad a jeho špecifikácia

Preklad špecifikovaný PG

Nech Gp = ( N, T D, R, S ), pričom T D = Potom preklad P(Gp) špecifikovaný Gp je definovaný ako:

P(Gp) = { (hi(w), ho(w) ) / w L (Gp)}Reaťazec w nazývane charakteristickou vetou – reťazcom

prekladu P(Gp)

Ak (x, y) P(Gp) ,

potom x T* nazývame vstupná veta alebo vstupný reťazec,

y D* nazývame výstupná veta alebo výstupný reťazec – prekladom reťazca x

Page 90: Preklad a jeho špecifikácia

Sémantická jednoznačnosť

Preklad, v ktorom každej vstupnej vete zodpovedá jediná výstupná veta nazývame jednoznačný.

Prekladová gramatika sa nazýva sémanticky jednoznačná ak neobsahuje žiadne dve pravidlá tvaru

A | Pre ktoré platí hi() = hi()

Page 91: Preklad a jeho špecifikácia

Príklad

Majme nasledujúcu prekladovú gramatiku

G = ({E, T, F}, {+, *, a, (, ) } {+’, *’, a’}, P, E)

P: E E + T +’ | T

T T * F *’ | F

F ( E ) | a a’

Page 92: Preklad a jeho špecifikácia

Preklad (derivácia) reťazca(a + a ) * aE T T * F *’ F * F *’ (E) * F *’ (E + T +’ ) * F *’ (T + T +’ ) * F *’ (F + T +’ ) * F *’ (a a’ + T +’ ) * F *’ (a a’ + F +’ ) * F *’

E E + T +’ | T

T T * F *’ | F

F ( E ) | a a’

Page 93: Preklad a jeho špecifikácia

Preklad (derivácia) reťazca(a + a ) * a; Cont.(a a’ + a a’ +’ ) * F *’

(a a’ + a a’ +’ ) * a a’ *’

Charakteristická veta: (a a’ + a a’ +’ ) * a a’ *’ Vstupná veta: (a + a) * a

Výstupná veta: a’ a’ +’ a’ *’

E E + T +’ | T

T T * F *’ | F

F ( E ) | a a’

Page 94: Preklad a jeho špecifikácia

Prekladový strom

Prekladový strom je derivačný strom, ktorý zodpovedá derivácii charakteristickej vety

Page 95: Preklad a jeho špecifikácia

Prekladový strom k prekladu reťazca (a + a ) * a

E

T

T*

F*’

F

( E )E + T +’T

F

a a’

F

a a’

a a’

Page 96: Preklad a jeho špecifikácia

OK

Page 97: Preklad a jeho špecifikácia
Page 98: Preklad a jeho špecifikácia
Page 99: Preklad a jeho špecifikácia
Page 100: Preklad a jeho špecifikácia
Page 101: Preklad a jeho špecifikácia
Page 102: Preklad a jeho špecifikácia
Page 103: Preklad a jeho špecifikácia