Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.

Slides:



Advertisements
Podobné prezentace
(instance konkrétní třídy)
Advertisements

Stručný úvod do UML.
Tabulky v MS ACCESS Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jiří Novák.
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Uživatelská rozhraní Uživatelská rozhraní 9. cvičení.
Algebra.
Vektorový animátor Diplomová práce
Programování v C++ Cvičení.
Principy překladačů Mezikód Jakub Yaghob.
Čtvrté cvičení Objektové programování Objektový model v Javě
Principy překladačů Překladač Jakub Yaghob. Literatura a slajdy Aho, Sethi, Ullman: Compilers - Principles, Techniques and Tools, Addison-Wesley 1986.
Generování mezikódu Jakub Yaghob
ADT Strom.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
PHP PHP – základy syntaxe (část 1) - 03 Mgr. Josef Nožička IKT PHP
Databáze Jiří Kalousek.
Podpora výuky a tvorby ER diagramu ve výukovém systému Barborka Petr Kopka VŠB – TU Ostrava, 2005.
Algoritmizace a programování
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Lestes C++ compiler. Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr.
Kapitoly z metodologie pedagogického výzkumu Prostředí pro výuku algoritmů Vojtěch Ouška.
DATOVÉ MODELY (c) Tralvex Yeap. All Rights Reserved.
13AMP 9. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled ADA ADA Java Java.
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Algoritmy a programovací techniky
Objektové programování
Jaroslav Šnajberk, Přemek Brada
Sémantická analýza Jakub Yaghob
Syntaxí řízený překlad
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
Modelování a simulace MAS_02
6. cvičení Polymorfismus
Excelent v EKOSu Ing. Daniela Dufková. Excelent v EKOSu Ing. Daniela Dufková.
B. Miniberger, BIVŠ Praha 2009
Dokumentace objektů a zveřejnění funkcí
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
IB111 Programování a algoritmizace
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Dokumentace informačního systému
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
Copyright (C) 1999 VEMA počítače a projektování, spol. s r.o.
Výkresové soubory Přednáška č.6. Témata přednášky Typy výkresových souborů –*.dwt, *.dwc, *.dwg, *.dxf DXF formát Ochrana souborů před poškozením Export.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
HUMUSOFT s.r.o. Konference WITNESS Setkání uživatelů programu WITNESS Hotel Valáškův Grunt, Kozov
Databázové modelování
Šesté cvičení Výjimky Balíky.
Databázové systémy Informatika pro ekonomy, př. 18.
Přístup do IS z mobilních zařízení Tomáš Tureček Katedra Informatiky FEI VŠB-TU Ostrava.
Databázové systémy Datové modely.
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Perzistence XML dat Kamil Toman
Překladače Vnitřní struktura překladače © Milan Keršláger
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
Tým 32, varianta b/4/I.  Jakub Kadlubiec  Roman Pijáček  Petr Pliska  Jan Štourač  Václav Tunka (vedoucí)
Veřejný seminář k projektu NIX-ZD.CZ
Operační systémy Vnitřní struktura překladače
Tradiční metodiky vývoje softwaru
Informatika pro ekonomy přednáška 8
Tradiční metody vývoje softwaru
METODOLOGIE PROJEKTOVÁNÍ
C# přehled vlastností.
ZAL – 7. cvičení 2016.
Transkript prezentace:

Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava

Cíle prezentace Překladače Překladače Objektový model jazyka Objektový model jazyka Systém SUIF Systém SUIF Použití systému SUIF při tvorbě překladače Použití systému SUIF při tvorbě překladače Metodika tvorby překladače jako objektové aplikace Metodika tvorby překladače jako objektové aplikace Závěr Závěr

Překladače Překladač je aplikace, která čte zdrojový program a převádí ho do ekvivalentního cílového programu. Překladač se dá rozdělit: Přední část Přední část Lexikální analýza Lexikální analýza Syntaktická analýza Syntaktická analýza Sémantická analýza Sémantická analýza Výsledkem je vnitřní reprezentace Výsledkem je vnitřní reprezentace Zadní část Zadní část Optimalizace Optimalizace Generování cílového kódu Generování cílového kódu

Objektový model jazyka 70 léta, překladač = složitá aplikace Zjednodušení díky využití dobře zvládnutých oblastí informatiky. Lexikální analýza Lexikální analýza regulární jazyky regulární jazyky Syntaktická analýza Syntaktická analýza bezkontextové gramatiky bezkontextové gramatiky Generátory překladačů: LEX, YACC, JavaCC. LEX, YACC, JavaCC. I když použijeme objektové metodiky, chceme používat tyto nástroje!

Objektový model jazyka Objektové principy lze vhodně využít u vnitřní reprezentace Objektové principy lze vhodně využít u vnitřní reprezentace Vnitřní reprezentace je pak objektovým modelem překládaného jazyka Vnitřní reprezentace je pak objektovým modelem překládaného jazyka Lze zobecnit vlastnosti používaných programovacích jazyků a vytvořit model obecného jazyka Lze zobecnit vlastnosti používaných programovacích jazyků a vytvořit model obecného jazyka Výhody toho obecného modelu: Výhody toho obecného modelu: Zjednodušuje návrh modelu jiného jazyka Zjednodušuje návrh modelu jiného jazyka Opakované použití operací a nástrojů Opakované použití operací a nástrojů

Systém SUIF Jeden z aktuálních standardů na poli vnitřní reprezentace Jeden z aktuálních standardů na poli vnitřní reprezentace Čistě objektově orientovaný Čistě objektově orientovaný Stanford University Intermediate Format Stanford University Intermediate Format Systém SUIF je z hlediska architektury rozdělen na čtyři základní moduly: Systém SUIF je z hlediska architektury rozdělen na čtyři základní moduly: jádro; jádro; vnitřní reprezentace; vnitřní reprezentace; analýzy a optimalizace; analýzy a optimalizace; řízení systému. řízení systému.

Systém SUIF – uzly vnitřní reprezentace Hierarchie uzlů vnitřní reprezentace na nejvyšší úrovni

Systém SUIF – jazyk Hoof Všechny uzly jsou popsány v jazyce Hoof Všechny uzly jsou popsány v jazyce Hoof Standardní mechanismus jak rozšiřovat, upravovat a měnit množinu uzlů vnitřní reprezentace Standardní mechanismus jak rozšiřovat, upravovat a měnit množinu uzlů vnitřní reprezentace Ze zdrojových souborů v jazyce Hoof jsou pak nástrojem SMGN vygenerovány implementace jednotlivých uzlů Ze zdrojových souborů v jazyce Hoof jsou pak nástrojem SMGN vygenerovány implementace jednotlivých uzlů

Systém SUIF – základy syntaxe jazyka Hoof (1) Systém uzlů vnitřní reprezentace se dělí do modulů. Systém uzlů vnitřní reprezentace se dělí do modulů. module název { vkládané moduly; vkládané moduly; tělo; tělo;}

Systém SUIF – základy syntaxe jazyka Hoof (2) Typ prvku může být nějaký datový typ Javy nebo definovaný uzel Typ prvku může být nějaký datový typ Javy nebo definovaný uzel Skupinové datové prvky: vector, list, searchabl_list a indexed_list Skupinové datové prvky: vector, list, searchabl_list a indexed_list Právo je buď owner nebo reference Právo je buď owner nebo reference concrete/abstract jméno_uzlu : dědí_s_uzlu { typ prvku * právo jméno; typ skupiny jméno; }

Systém SUIF – SMGN (1) Z definic v jazyce Hoof vygeneruje zdrojové soubory uzlů Z definic v jazyce Hoof vygeneruje zdrojové soubory uzlů Modulů odpovídá balík Javy Modulů odpovídá balík Javy Každá třída je v samostatném souboru a je public Každá třída je v samostatném souboru a je public Název této třídy je shodný s názvem uzlu Název této třídy je shodný s názvem uzlu Pro skupinové datové typy jsou použity: Pro skupinové datové typy jsou použity: java.util.Vector pro klíčové slovo vector; java.util.Vector pro klíčové slovo vector; java.util.LinkedList pro klíčové slovo list; java.util.LinkedList pro klíčové slovo list; java.util.ArrayList pro klíčové slovo searchable_list; java.util.ArrayList pro klíčové slovo searchable_list; java.util.HashMap pro klíčové slovo indexed_list. java.util.HashMap pro klíčové slovo indexed_list.

Systém SUIF – SMGN (2) Pro každou jednoduchou položku uzlu jsou vygenerovány metody set a get Pro každou jednoduchou položku uzlu jsou vygenerovány metody set a get Pro skupinové položky je vygenerováno několik metod pro práci s nimi Pro skupinové položky je vygenerováno několik metod pro práci s nimi V názvech jsou velká písmena nahrazena malými a předsazena „podtržítkem“ V názvech jsou velká písmena nahrazena malými a předsazena „podtržítkem“ Po úspěšném překladu je vygenerován binární soubor (boof). Ten je použit při překladu jiného modulu. Po úspěšném překladu je vygenerován binární soubor (boof). Ten je použit při překladu jiného modulu.

Systém SUIF – fyzická struktura Basicnodes – základní uzly v jazyce Hoof Basicnodes – základní uzly v jazyce Hoof Suifnodes – rozšířené uzly v jazyce Hoof Suifnodes – rozšířené uzly v jazyce Hoof Osuifnodes – uzly modulu pro podporu OOJ Osuifnodes – uzly modulu pro podporu OOJ Kernel Kernel SMGN – zdrojové soubory aplikace SMGN SMGN – zdrojové soubory aplikace SMGN Sources Sources suif_j.basic – vygenerované zdrojové soubory uzlů suif_j.basic – vygenerované zdrojové soubory uzlů suif_j. … suif_j. … Classes Classes suif_j.basic – přeložené zdrojové soubory uzlů suif_j.basic – přeložené zdrojové soubory uzlů suif_j. … suif_j. …

Experimentální výsledky Většina podstatných modulů byla implementována v Javě Většina podstatných modulů byla implementována v Javě Generované třídy vnitřní reprezentace jsou také v Javě Generované třídy vnitřní reprezentace jsou také v Javě Vytvořený systém byl (včetně obecného modelu vnitřní reprezentace) popsán Vytvořený systém byl (včetně obecného modelu vnitřní reprezentace) popsán Správnost řešení byla demonstrována na netriviálním příkladu (překladači jazyka e- Java) Správnost řešení byla demonstrována na netriviálním příkladu (překladači jazyka e- Java)

Použití systému SUIF při tvorbě překladače 1. Obecný model je upraven tak, aby vhodně reprezentoval překládaný jazyk 2. Změny vnitřní reprezentace jsou popsány v jazyce Hoof 3. Pomocí nástroje SMGN jsou vygenerovány implementace uzlů vnitřní reprezentace 4. Překladač je vyvíjen obvyklým způsobem. 5. Lze využít nástroje a funkce implementované v systému SUIF

Použití systému SUIF při tvorbě překladače – příklad (1) Třídní diagram vnitřní reprezentace proměnné v systému SUIF Třídní diagram vnitřní reprezentace proměnné v systému SUIF

Použití systému SUIF při tvorbě překladače – příklad (2) Možné rozšíření Možné rozšíření Proměnná může být jak instanční tak lokální Proměnná může být jak instanční tak lokální Instanční má navíc ukazatel na třídu, ve které byla definována Instanční má navíc ukazatel na třídu, ve které byla definována

Použití systému SUIF při tvorbě překladače – příklad (3) Popis rozšíření v jazyce Hoof Popis rozšíření v jazyce Hoof module java { import basic; import suif; import osuif; concrete InstanceFieldSymbol : VariableSymbol{ searchable_list attributes; ClassType * reference owning_class; }; concrete LocalVariableSymbol : VariableSymbol{ }; }

Příklad class A { final int a; public static B b; }

Překladač jako objektová aplikace (1) Překladač je aplikace jako jakákoliv jiná Překladač je aplikace jako jakákoliv jiná Při jejím vývoji můžeme využít objektové metodologie Při jejím vývoji můžeme využít objektové metodologie Pořád používáme „genrátory překladačů“ Pořád používáme „genrátory překladačů“ Pro vnitřní reprezentaci použijeme systém SUIF (nebo jakýkoliv jiný) Pro vnitřní reprezentaci použijeme systém SUIF (nebo jakýkoliv jiný) => Překladač jako aplikace je jednoduchý => Překladač jako aplikace je jednoduchý

Překladač jako objektová aplikace (2)

Překladač jako objektová aplikace (3) Průchody překladače jako samostatné subsystémy – umožňuje opakované použití a je obecnější Průchody překladače jako samostatné subsystémy – umožňuje opakované použití a je obecnější Průchody mění vnitřní reprezentaci (instance SuifEnv) Průchody mění vnitřní reprezentaci (instance SuifEnv) Jednotný chybový systém je velice výhodný. Jednotný chybový systém je velice výhodný.

Závěr Využití objektově orientovaného přístupu při tvorbě překladačů přináší další zjednodušení a zefektivnění Využití objektově orientovaného přístupu při tvorbě překladačů přináší další zjednodušení a zefektivnění Při tvorbě překladačů je objektový přístup přínosný zejména u formátu vnitřní reprezentace Při tvorbě překladačů je objektový přístup přínosný zejména u formátu vnitřní reprezentace Využití obecného formátu vnitřní reprezentace přináší značné výhody Využití obecného formátu vnitřní reprezentace přináší značné výhody Příkladem takovéhoto obecného formátu vnitřní reprezentace je systém SUIF Příkladem takovéhoto obecného formátu vnitřní reprezentace je systém SUIF

Děkuji za pozornost!