PROGRAMOVACÍ JAZYKY A PŘEKLADAČE FORMALISMY PRO SYNTAXÍ ŘÍZENÝ PŘEKLAD: PŘEKLADOVÉ A ATRIBUTOVÉ GRAMATIKY.



Podobné dokumenty
Syntaxí řízený překlad

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Teorie programovacích jazyků. Dvourozměrné jazyky a digitální obrazy

Syntaxí řízený překlad

Semestrální práce implementuje univerzální tokenizer založený na stavovém automatu. Jsou implementovány následující automaty:

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.

22. TVORBA UŽIVATELSKÝCH INSTRUKCÍ A MAKER

Zadání úlohy do projektu z předmětu IPP 2013/2014

GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

JICH APLIKACE FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS

Genetické algoritmy. Vysoká škola ekonomická Praha. Tato prezentace je k dispozici na:

Maturitní otázky z předmětu PROGRAMOVÁNÍ

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

/1: Teoretická informatika(ti) přednáška 4

Interpret jazyka IFJ2011

1.Charakterizujte křížový překladač 2.Objasněte pojem silikonový překladač 3.Co to jsou formátory textu? Uveďte příklad

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Principy UML. Clear View Training 2005 v2.2 1

Teorie systémů TES 5. Znalostní systémy KMS

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

1 Úvod do kompilátorů

Dynamické programování

1 Predikátová logika. 1.1 Syntax. jaký mohou mít formule význam (sémantiku). 1. Logických symbolů: 2. Speciálních (mimologických) symbolů:

1 REZOLUČNÍ FORMÁLNÍ DŮKAZY

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Implementace LL(1) překladů

Datové struktury 2: Rozptylovací tabulky

Errata. Seznam chyb v textu bakalářské práce. Překladač s optimalizací výsledného kódu, 2013, Petr Krajník. Stav objevených chyb z 9.

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ.

1. Definujte překladač. Jaký je rozdíl mezi interpretačním a kompilačním překladačem? Co je to konverzační překladač?

Kolaborativní aplikace

SQL - trigger, Databázové modelování

IB111 Úvod do programování skrze Python Přednáška 13

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Multiplexování signálů

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D.

Jednoznačné a nejednoznačné gramatiky

Programování v Javě I. Únor 2009

Základy teorie množin

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Programování v Javě I. Leden 2008

Modelování obchodních procesů

Národní informační středisko pro podporu kvality

B3 Vazba strategie byznys

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza.

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY SYNTAKTICKÁ ANALÝZA ZALOŽENÁ NA MULTIGENEROVÁNÍ PARSING BASED ON MULTIGENERATION

2 Formální jazyky a gramatiky

ŽÁDOST O NADAČNÍ PŘÍSPĚVEK

Etapy tvorby lidského díla

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

4.2 Syntaxe predikátové logiky

Lexikální analýza Teorie programovacích jazyků

13. Třídící algoritmy a násobení matic

Aplikovaná informatika

ANALÝZA A KLASIFIKACE DAT

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

PREPROCESOR POKRAČOVÁNÍ

1. Dědičnost a polymorfismus

Náznak ukázky syntaxe a sémantiky pro projekt. 1 Syntaktické prvky. Poslední aktualizace: 8.

02 Klasifikace bezpečnostních tříd OBSAH

Vizuální programovací jazyk

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Dokumentace programu piskvorek

KOMPLEXNÍ VZDĚLÁVÁNÍ KATEDRA STROJNÍ SPŠSE a VOŠ LIBEREC

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

Progrestech nástroje s.r.o. TITEX katalog Alpha Point

Úvod do informatiky. Miroslav Kolařík

Základní datové struktury III: Stromy, haldy

výhra chvilka výhra chvilka

Lexikální analýza. Rozhraní lexikálního analyzátoru. Miroslav Beneš Dušan Kolář. M. Beneš, D. Kolář: Lexikální analýza 1. Lexikální analýza 2

Syntaxí řízený překlad

Lexikální analýza. Miroslav Beneš Dušan Kolář

Šablonovací systém htmltmpl vypracoval: Michal Vajbar, Šablonovací systém htmltmpl

Komputerizace problémových domén

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Anotace. Jednotky (tvorba a využití), struktury (typ record),

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

Základy algoritmizace. Pattern matching

Ant Colony Optimization

/01: Teoretická informatika(ti) přednáška 5

Jazyk C++ II. Výjimky

PB161 Programování v jazyce C++ Přednáška 9

Vztah jazyků Chomskeho hierarchie a jazyků TS

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

4IT218 Databáze. 4IT218 Databáze

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Sudý počet jedniček: S 1 0S 1 1S 2 e S 2 1S 1 0S 2

Naproti tomu gramatika je vlastně soupis pravidel, jak

[ 1 ] Ing. František Chuchma, CSc. Seminář SVP/SDP, Státní ústav kontrolu léčiv

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

Úvod do databázových systémů

Transkript:

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, (N T D)*, 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 Sémantika A α X β X.d= f(atributy z A α X β) Atributy se dělí na dva typy: A.s= f(atributy z A α X β) 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: