Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilErik Konečný
1
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava
2
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
3
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
4
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!
5
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ů
6
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.
7
Systém SUIF – uzly vnitřní reprezentace Hierarchie uzlů vnitřní reprezentace na nejvyšší úrovni
8
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ů
9
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;}
10
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; }
11
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.
12
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.
13
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. …
14
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)
15
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
16
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
17
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
18
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{ }; }
19
Příklad class A { final int a; public static B b; }
20
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ý
21
Překladač jako objektová aplikace (2)
22
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ý.
23
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
24
Děkuji za pozornost!
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.