PROGRAMOVACÍ JAZYKY A PŘEKLADAČE FORMALISMY PRO SYNTAXÍ ŘÍZENÝ PŘEKLAD: PŘEKLADOVÉ A ATRIBUTOVÉ GRAMATIKY.
2011 Jan Janoušek BI-PJP
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Formální překlady
FORMÁLNÍ PŘEKLAD- rekapitulace
Formální překlad (formal translation) je definován jako relace množina dvojic (vstup, výstup). Formálně: Formální překlad z jazyka L nad abecedou T do jazyka V nad abecedou D je binární relace Z L V. Z dvojice (x, y) Z se:
x nazývá vstupní řetězec, y výstupní řetězec, který je překladem řetězce x.
Překlad je jednoznačný, jestliže každému řetězci x L odpovídá nanejvýš jeden výstupní řetězec y V. Výstupní symboly jsou v teorii konstrukce překladačů také často nazývány akční symboly (action symbols), protože často reprezentují různé akce jako vygenerování výstupní instrukce, apod…
PŘEKLADOVÁ GRAMATIKA rekapitulace
Překladová gramatika je bezkontextová gramatika rozšířená o výstupní symboly (output symbols). Vzhledem k tomu, že pravé strany pravidel jsou rozšířeny o možnost výskytu výstupních symbolů, jedná se o velice jednoduchý formalismus a třída překladů popsaná překladovými gramatikami není příliš velká. Jedná se tak o přirozený a nejjednodušší možný způsob popisu formálního překladu.
PŘEKLADOVÁ GRAMATIKA - definice
Překladová gramatika je pětice PG = (N, T, D, R, S), kde
N je konečná množina neterminálních symbolů, T je konečná množina vstupních symbolů, D je konečná množina výstupních symbolů, R je konečná množina pravidel tvaru A , kde A N, (NTD)*, S je počáteční (startovací) symbol gramatiky.
PŘEKLADOVÁ GRAMATIKA - příklady
překlad výrazů z infixové notace do postfixové notace:
PG = ({E, T}, {a, +, *, (, )}, {a, +, *}, R, S) E E + T + | T T T * F * | F F a a | ( E )
překlad výrazů z infixové notace do prefixové notace:
PG = ({E, T}, {a, +, *, (, )}, {a, +, *}, R, S) E + E + T | T T * T * F | F F a a | ( E )
ATRIBUTOVÉ PŘEKLADY
ATRIBUTOVANÉ PŘEKLADY
Jedná se o překlady popsané atributovou překladovou gramatikou. Atributová překladová gramatika je rozšířením překladové gramatiky o tzv. atributy. Atributy mohou nabývat libovolných hodnot z oboru hodnot příslušného atributu (lze si je představit jako proměnné). Jak je gramatika formalismem pro popis syntaxe, atributová gramatika je formalismem pro popis sémantiky. Na rozdíl od překladové gramatiky, lze atributovou gramatikou obecně popisovat velmi velkou třídu překladů, dokonce pomocí atributové gramatiky lze přijímat přesně třídu rekurzivně spočetných jazyků, tj. jazyků, které lze přijímat Turingovým strojem.
ATRIBUTOVANÉ PŘEKLADY
Každý atribut je přiřazený syntaktickému symbolu gramatiky, atribut a symbolu X se označuje X.a. Hodnota atributu je definována atributovým (sémantickým) pravidlem. Každé sémantické pravidlo je přiřazeno jednomu syntaktickému pravidlu. příklad: Syntaxe A→α X β
Sémantika X.d= f(atributy z A → α X β) A.s= f(atributy z A → α X β)
Atributy se dělí na dva typy:
Syntetizované (synthesized) – výpočet atributu symbolu na levé straně pravidla, např. atribut A.s je syntetizovaný atribut. Dědičné (inherited) - výpočet atributu symbolu na pravé straně pravidla, např. atribut X.d je dědičný atribut.
Obrázek atributového derivačního stromu se znázorněním principu dědičných a syntetizovaných atributů
ATRIBUTY SYMBOLŮ
Syntetizované atributy jsou starší, byly navrženy již od počátku (prof. Donald Knuth). Platí, že libovolný problém lze vyřešit pouze syntetizovanými atributy. Dědičné atributy byly zavedeny později, aby se atributová pravidla zjednodušila. Vstupní (terminální) symboly mají pouze syntetizované atributy, výstupní symboly mají pouze dědičné atributy, neterminální symboly mají syntetizované i dědičné atributy.
ATRIBUTOVANÉ PŘEKLADY - příklad
ATRIBUTOVANÉ PŘEKLADY – další příklad
IMPLEMENTACE ATRIBUTOVANÉHO PŘEKLADU
Po definici problému atributovou gramatikou často v další fázi chceme implementovat překlad popsaný touto gramatikou. Za tímto účelem se pro různé typy zpracování vstupu definují různá omezení na podobu atributových pravidel, aby šel zmíněný překlad realizovat. Např. pro realizaci překladu jako pouhého rozšíření LL analýzy musí být atributová gramatiak tzv. L-atributová gramatika (viz příští přednáška). Pak lze výpočet atributů realizovat v jednom průchodu jako rozšíření deterministické LL analýzy.
IMPLEMENTACE ATRIBUTOVANÉHO PŘEKLADU
Pro daný atributovaný vstupní řetězec, tj. vstupní řetězec s přidanými sysntetizovanými atributy jednotlivých symbolů v řetězci chceme sestravit překladový strom a v něm vypočíst hodnoty všech atributů. Někdy mohou být závislosti mezi atrubuty takové, že výpočet hodnot atributů není možné provést jedním průchodem derivačního stromu. Příklad:
CYKLY V ATRIBUTOVÉ GRAMATICE
Někdy mohou být v atributové gramatice i cykly, což je velmi nežádoucí jev z pohledu výpočtu hodnot atributů. Příklad: