Syntaxí řízený překlad Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 27. listopadu 2008
Definice Překlad z jazyka L 1 do jazyka L 2 je definován množinou uspořádaných dvojic [zdrojový program, cílový program], kde zdrojový program L 1 a cílový program L 2. Definice (Formální překlad) je binární relace Z D H, která přiřazuje každému prvku z množiny D (zdrojový program) množinu prvků množiny H (jeho překladů). Pokud Z přiřadí pro každý prvek množiny D nejvýše jeden prvek množiny H, pak Z nazýváme funkcí a překlad je jednoznačný. Zapisujeme (x, y) Z nebo Z(x) = y (pokud překlad není jednoznačný, pak píšeme y Z(x)). Definičním oborem formálního překladu je množina všech hodnot, kterých může nabývat prvek x, tedy množina D, oborem hodnot je množina všech hodnot, kterých může nabývat prvek y, tedy množina H.
Definice Překlad z jazyka L 1 do jazyka L 2 je definován množinou uspořádaných dvojic [zdrojový program, cílový program], kde zdrojový program L 1 a cílový program L 2. Definice (Formální překlad) je binární relace Z D H, která přiřazuje každému prvku z množiny D (zdrojový program) množinu prvků množiny H (jeho překladů). Pokud Z přiřadí pro každý prvek množiny D nejvýše jeden prvek množiny H, pak Z nazýváme funkcí a překlad je jednoznačný. Zapisujeme (x, y) Z nebo Z(x) = y (pokud překlad není jednoznačný, pak píšeme y Z(x)). Definičním oborem formálního překladu je množina všech hodnot, kterých může nabývat prvek x, tedy množina D, oborem hodnot je množina všech hodnot, kterých může nabývat prvek y, tedy množina H.
Pojmy L 1 vstupní jazyk, gramatika G, L 1 = L(G), L 2 výstupní jazyk, M(G) množina derivačních stromů všech slov generovaných gramatikou G. Postup překladu Z L 1 L 2 jako přímý překlad je příliš složitý, Z 1 L 1 M(G): přeložíme vstup z L 1 na derivační strom z M(G), Z 2 M(G) L 2 : přeložíme derivační strom z M(G) na výstup z L 2.
Pojmy L 1 vstupní jazyk, gramatika G, L 1 = L(G), L 2 výstupní jazyk, M(G) množina derivačních stromů všech slov generovaných gramatikou G. Postup překladu Z L 1 L 2 jako přímý překlad je příliš složitý, Z 1 L 1 M(G): přeložíme vstup z L 1 na derivační strom z M(G), Z 2 M(G) L 2 : přeložíme derivační strom z M(G) na výstup z L 2. Z L 1 L 2
Pojmy L 1 vstupní jazyk, gramatika G, L 1 = L(G), L 2 výstupní jazyk, M(G) množina derivačních stromů všech slov generovaných gramatikou G. Postup překladu Z L 1 L 2 jako přímý překlad je příliš složitý, Z 1 L 1 M(G): přeložíme vstup z L 1 na derivační strom z M(G), Z 2 M(G) L 2 : přeložíme derivační strom z M(G) na výstup z L 2. Z L 1 Z 1 L 2 M(G)
Pojmy L 1 vstupní jazyk, gramatika G, L 1 = L(G), L 2 výstupní jazyk, M(G) množina derivačních stromů všech slov generovaných gramatikou G. Postup překladu Z L 1 L 2 jako přímý překlad je příliš složitý, Z 1 L 1 M(G): přeložíme vstup z L 1 na derivační strom z M(G), Z 2 M(G) L 2 : přeložíme derivační strom z M(G) na výstup z L 2. Z L 1 Z 1 Z 2 L 2 M(G)
Syntaxí řízený překlad Definice (Syntaxí řízený překlad) Z L 1 L 2 je složení Z = Z 1 Z 2, kde Z 1 je překlad vstupního řetězce na derivační strom a Z 2 je překlad takového derivačního stromu na řetězec výstupního jazyka. Realizace Syntaxí řízený překlad lze popsat překladovou gramatikou a realizovat překladovým automatem.
Syntaxí řízený překlad Definice (Syntaxí řízený překlad) Z L 1 L 2 je složení Z = Z 1 Z 2, kde Z 1 je překlad vstupního řetězce na derivační strom a Z 2 je překlad takového derivačního stromu na řetězec výstupního jazyka. Realizace Syntaxí řízený překlad lze popsat překladovou gramatikou a realizovat překladovým automatem.
Překladová gramatika Definice (Překladová gramatika) je uspořádaná pětice se zápisem P G = (N, T, D, R, S), kde N je neprázdná konečná množina všech neterminálních symbolů gramatiky, T je neprázdná konečná množina vstupních terminálů vstupní abeceda, D je konečná množina výstupních terminálů výstupní abeceda (může být prázdná), R je neprázdná konečná množina pravidel ve tvaru N (N T D), jinak: A α, A N, α (N T D), S je startovací symbol gramatiky a platí T D = (jsou disjunktní) a N T = a N D =.
Překladová gramatika generuje slova nad abecedou (T D), vstupní a výstupní terminály jsou promíchané. Definice (Homomorfismus) Nechť Σ 1 a Σ 2 jsou abecedy. Homomorfismem nazýváme každé zobrazení h : Σ 1 Σ 2 takové, že pro každé a Σ 1, b Σ 1 platí homomorfní podmínky: h(ε) = ε, h(a b) = h(a) h(b).
Překladová gramatika generuje slova nad abecedou (T D), vstupní a výstupní terminály jsou promíchané. Definice (Homomorfismus) Nechť Σ 1 a Σ 2 jsou abecedy. Homomorfismem nazýváme každé zobrazení h : Σ 1 Σ 2 takové, že pro každé a Σ 1, b Σ 1 platí homomorfní podmínky: h(ε) = ε, h(a b) = h(a) h(b).
Základní princip Homomorfismus se uplatňuje takto: rozložíme zdrojový řetězec na jednotlivé symboly, tyto symboly všechny přeložíme (uplatníme zobrazení h), výsledky překladu symbolů zřetězíme podle původního pořadí. Uplatnění na překladovou gramatiku Vstupní homomorfismus: j X ; X (T N) h i(x) = ε ; X D Výstupní homomorfismus: j X ; X (D N) h o(x) = ε ; X T
Základní princip Homomorfismus se uplatňuje takto: rozložíme zdrojový řetězec na jednotlivé symboly, tyto symboly všechny přeložíme (uplatníme zobrazení h), výsledky překladu symbolů zřetězíme podle původního pořadí. Uplatnění na překladovou gramatiku Vstupní homomorfismus: j X ; X (T N) h i(x) = ε ; X D Výstupní homomorfismus: j X ; X (D N) h o(x) = ε ; X T
Definice Překlad Z v překladové gramatice P G je definován jako množina uspořádaných dvojic vstupních a výstupních homomorfismů všech řetězců generovaných překladovou gramatikou: Z(P G) = {(h i (w), h o (w)) ; S w, w (T D) }.
Překladová gramatika P G = (N, T, D, P, S) je kombinací dvou gramatik, vstupní a výstupní. Definice (Vstupní a výstupní gramatika) Vstupní gramatika překladové gramatiky P G je bezkontextová gramatika G i = (N, T, P i, S), kde P i = {A h i (α); (A α) P }. Výstupní gramatika překladové gramatiky P G je bezkontextová gramatika G o = (N, D, P o, S), kde P o = {A h o (α); (A α) P }. Poznámka Vstupní i výstupní gramatika jsou běžné bezkontextové gramatiky.
Překladová gramatika P G = (N, T, D, P, S) je kombinací dvou gramatik, vstupní a výstupní. Definice (Vstupní a výstupní gramatika) Vstupní gramatika překladové gramatiky P G je bezkontextová gramatika G i = (N, T, P i, S), kde P i = {A h i (α); (A α) P }. Výstupní gramatika překladové gramatiky P G je bezkontextová gramatika G o = (N, D, P o, S), kde P o = {A h o (α); (A α) P }. Poznámka Vstupní i výstupní gramatika jsou běžné bezkontextové gramatiky.
Bezkontextová gramatika: Větná forma v bezkontextové gramatice je kterýkoliv člen derivací v této gramatice. Definice (Formy v překladové gramatice) Překladová forma α v překladové gramatice P G je je řetězec symbolů nad abecedou (N T D), který lze v P G odvodit ze startovacího symbolu S α. Jestliže α je překladová forma v překladové gramatice P G, pak h i (α) je vstupní větná forma a h o (α) výstupní větná forma v této gramatice. Poznámka Vstupní větná forma překladové gramatiky je větnou formou vstupní gramatiky, výstupní větná forma překladové gramatiky je větnou formou výstupní gramatiky.
Bezkontextová gramatika: Větná forma v bezkontextové gramatice je kterýkoliv člen derivací v této gramatice. Definice (Formy v překladové gramatice) Překladová forma α v překladové gramatice P G je je řetězec symbolů nad abecedou (N T D), který lze v P G odvodit ze startovacího symbolu S α. Jestliže α je překladová forma v překladové gramatice P G, pak h i (α) je vstupní větná forma a h o (α) výstupní větná forma v této gramatice. Poznámka Vstupní větná forma překladové gramatiky je větnou formou vstupní gramatiky, výstupní větná forma překladové gramatiky je větnou formou výstupní gramatiky.
Speciální typy překladových gramatik Definice (Regulární překladová gramatika) Překladovou gramatiku P G = (N, T, D, R, S) nazýváme regulární, jestliže má pouze pravidla ve tvaru A xγb, A, B N, x T, γ D, A xγ, A N, x T, γ D, S ε, jestliže S se nevyskytuje na pravé straně žádného pravidla. Definice (Překladová gramatika typu LL, LR) Překladová gramatika P G je typu LL(k) (silná LL(k), LR(k), silná LR(k)) pro nějaké přirozené číslo k, jestliže její vstupní gramatika je typu LL(k) (silná LL(k), LR(k), silná LR(k)).
Speciální typy překladových gramatik Definice (Regulární překladová gramatika) Překladovou gramatiku P G = (N, T, D, R, S) nazýváme regulární, jestliže má pouze pravidla ve tvaru A xγb, A, B N, x T, γ D, A xγ, A N, x T, γ D, S ε, jestliže S se nevyskytuje na pravé straně žádného pravidla. Definice (Překladová gramatika typu LL, LR) Překladová gramatika P G je typu LL(k) (silná LL(k), LR(k), silná LR(k)) pro nějaké přirozené číslo k, jestliže její vstupní gramatika je typu LL(k) (silná LL(k), LR(k), silná LR(k)).
Prefix, postfix, infix Infixový tvar (a + b) c a (b + c) Prefixový tvar + abc a + bc Postfixový tvar ab + c abc +
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů bez závorek na prefixové. Řešení P G = ({A}, {a, +, }, { a, +, }, R, A) s pravidly A a + + a A a a A a a V gramatice odvodíme slovo: A a a A a a a + + a A a a a + + a a a ( ) h i ( a a a + + a a a ) = a a + a h o a a a + + a a a = a + a a (a a + a, a + a a ) je prvkem překladu určeného překladovou gramatikou P G.
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů bez závorek na prefixové. Řešení P G = ({A}, {a, +, }, { a, +, }, R, A) s pravidly A a + + a A a a A a a V gramatice odvodíme slovo: A a a A a a a + + a A a a a + + a a a ( ) h i ( a a a + + a a a ) = a a + a h o a a a + + a a a = a + a a (a a + a, a + a a ) je prvkem překladu určeného překladovou gramatikou P G.
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů bez závorek na prefixové. Řešení P G = ({A}, {a, +, }, { a, +, }, R, A) s pravidly A a + + a A a a A a a V gramatice odvodíme slovo: A a a A a a a + + a A a a a + + a a a ( ) h i ( a a a + + a a a ) = a a + a h o a a a + + a a a = a + a a (a a + a, a + a a ) je prvkem překladu určeného překladovou gramatikou P G.
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů bez závorek na prefixové. Řešení P G = ({A}, {a, +, }, { a, +, }, R, A) s pravidly A a + + a A a a A a a V gramatice odvodíme slovo: A a a A a a a + + a A a a a + + a a a ( ) h i ( a a a + + a a a ) = a a + a h o a a a + + a a a = a + a a (a a + a, a + a a ) je prvkem překladu určeného překladovou gramatikou P G.
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů na postfixové, která zachovává priority operátorů. Řešení E E + T + T T T F F F a a (E) Ukázka odvození slova: E E + T + T + T + T F + T + F F + T + a a F + T + a a a a + T + a a a a + F + a a a a + a a + h i (w) = x x + x h o (w) = x x x +
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů na postfixové, která zachovává priority operátorů. Řešení E E + T + T T T F F F a a (E) Ukázka odvození slova: E E + T + T + T + T F + T + F F + T + a a F + T + a a a a + T + a a a a + F + a a a a + a a + h i (w) = x x + x h o (w) = x x x +
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů na postfixové, která zachovává priority operátorů. Řešení E E + T + T T T F F F a a (E) Ukázka odvození slova: E E + T + T + T + T F + T + F F + T + a a F + T + a a a a + T + a a a a + F + a a a a + a a + h i (w) = x x + x h o (w) = x x x +
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů na postfixové, která zachovává priority operátorů. Řešení E E + T + T T T F F F a a (E) Ukázka odvození slova: E E + T + T + T + T F + T + F F + T + a a F + T + a a a a + T + a a a a + F + a a a a + a a + h i (w) = x x + x h o (w) = x x x +
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů na postfixové, která zachovává priority operátorů a je typu LL(1). Řešení E T A A +T + A ε T F B B F B ε F a a (E)
Zadání Vytvořte překladovou gramatiku pro překlad infixových výrazů na postfixové, která zachovává priority operátorů a je typu LL(1). Řešení E T A A +T + A ε T F B B F B ε F a a (E)
Zadání Vytvořte regulární překladovou gramatiku pro překlad infixových výrazů na postfixové bez závorek. Řešení S a a A a a A B +C B a a A a a C a a + A a a + Ukázka odvození: S a a A a a B a a a a
Zadání Vytvořte regulární překladovou gramatiku pro překlad infixových výrazů na postfixové bez závorek. Řešení S a a A a a A B +C B a a A a a C a a + A a a + Ukázka odvození: S a a A a a B a a a a