4.1 Překladové gramatiky
Překladová gramatika je nástroj, který nám zajišťuje generování řetězců z jazyka definičního oboru a k nim odpovídajícího překladu z jazyka oboru hodnot.
Definice (Bezkontextová překladová gramatika)
Bezkontextová překladová gramatika
Bezkontextová překladová gramatika je definována jako uspořádaná pětice \(PG = (N, \Sigma, D, R, S)\), kde:
- \(N\) je konečná neprázdná množina neterminálních symbolů,
- \(\Sigma\) je konečná množina vstupních symbolů,
- \(D\) je konečná množina výstupních symbolů (\(\Sigma \cap D = \emptyset, (\Sigma \cup D) \cap N = \emptyset\)),
-
\(R\) je konečná množina přepisovacích pravidel ve tvaru:
\[A \to \alpha \quad (A \in N, \alpha \in (N \cup \Sigma \cup D)^*)\] -
\(S \in N\) je počáteční neterminální symbol.
Definice (Regulární překladová gramatika)
Regulární překladová gramatika
Regulární překladová gramatika je též uspořádaná pětice \(PG = (N, \Sigma, D, R, S)\), nyní však s pravidly ve tvaru:
Jedinou povolenou výjimkou z těchto pravidel je pravidlo \(S \to \varepsilon\). Toto pravidlo se v regulární překladové gramatice může vyskytnout za předpokladu, že počáteční neterminál \(S\) se nevyskytuje na pravé straně žádného pravidla.
Homomorfismy a definice překladu
Abychom mohli formálně definovat překlad, zavedeme pojem homomorfismus.
Homomorfismus
Uvažujme abecedy \(\Sigma\) a \(D\). Homomorfismem nazýváme každé zobrazení \(h: \Sigma \to D^*\). Definiční obor homomorfismu rozšíříme na \(\Sigma^*\) následovně:
Definice (Vstupní a výstupní homomorfismus)
Vstupní a výstupní homomorfismus
Nechť \(PG = (N, \Sigma, D, R, S)\) je překladová gramatika.
-
Vstupní homomorfismus \(h_i^{PG}: (N \cup \Sigma \cup D) \to (N \cup \Sigma)^*\) je definován takto:
\[h_i^{PG}(a) = \begin{cases} a & \text{pokud } a \in N \cup \Sigma \\ \varepsilon & \text{pokud } a \in D \end{cases}\](Ponechává neterminály a vstupní symboly, maže výstupní symboly.)
-
Výstupní homomorfismus \(h_o^{PG}: (N \cup \Sigma \cup D) \to (N \cup D)^*\) je definován takto:
\[h_o^{PG}(a) = \begin{cases} a & \text{pokud } a \in N \cup D \\ \varepsilon & \text{pokud } a \in \Sigma \end{cases}\](Ponechává neterminály a výstupní symboly, maže vstupní symboly.)
Definice (Překlad definovaný překladovou gramatikou)
Překlad definovaný překladovou gramatikou
Nechť \(PG = (N, \Sigma, D, R, S)\) je překladová gramatika. Pak překlad definovaný překladovou gramatikou \(PG\) definujeme následovně:
To znamená, že řetězec \(v \in D^*\) (obor hodnot) je překladem řetězce \(u \in \Sigma^*\) (definiční obor) právě tehdy, když oba vznikly ze stejného řetězce \(w\) vygenerovaného gramatikou (po odstranění příslušných symbolů).
Charakteristická, vstupní a výstupní gramatika
Definice (Charakteristická gramatika a jazyk)
Charakteristická gramatika a jazyk
Nechť \(PG = (N, \Sigma, D, R, S)\) je překladová gramatika.
- Charakteristickou gramatiku \(G\) definujeme jako \(G = (N, \Sigma \cup D, R, S)\).
- Jazyk \(L(G)\) nazýváme charakteristický jazyk překladu \(Z(PG)\).
- Řetězec \(w \in L(G)\) nazýváme charakteristickou větou dvojice \((u, v) \in Z(PG)\), kde \(u = h_i(w)\) a \(v = h_o(w)\).
Definice (Vstupní a výstupní gramatika)
Vstupní a výstupní gramatika
Nechť \(PG = (N, \Sigma, D, R, S)\) je překladová gramatika.
- Vstupní gramatika \(G_i\) je definována jako \(G_i = (N, \Sigma, P_i, S)\), kde \(P_i = \{A \to h_i(\alpha) : (A \to \alpha) \in R\}\).
- Výstupní gramatika \(G_o\) je definována jako \(G_o = (N, D, P_o, S)\), kde \(P_o = \{A \to h_o(\alpha) : (A \to \alpha) \in R\}\).
Vstupní (respektive výstupní) gramatika tedy vznikne z překladové gramatiky tak, že odebereme výstupní (respektive vstupní) symboly. Z pětice se tak stane čtveřice a ve všech pravidlech budou ponechány pouze vstupní (respektive výstupní) symboly a neterminály.