Operační systémy Vnitřní struktura překladače

Slides:



Advertisements
Podobné prezentace
Bakalářská práce Prostředí pro výuku algoritmů
Advertisements

™. ™ Zprovoznění zařízení a zahájení jejich řízení během několika minut.
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ý.
A4B33OSS (J. Lažanský) verze: Podzim 2013 Od programu k procesu 1 Obsah Téma 8 – Od programu k procesu 1.Interpretace a kompilace 2.Od zdrojového textu.
SOFTWARE dálkové studium PODNIKÁNÍ 2. listopad 2006.
Operační systém Adam Greguš, 4.A.
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
Lexikální a syntaktická analýza Jakub Yaghob
Lestes C++ compiler. Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr.
25. ALGORITMIZACE A PROGRAMOVÁNÍ
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Maturitní okruh č. 7. Odstínit aplikace od specifik HWSpráva procesůSpráva pamětiSpráva souborůSpráva vstupů a výstupůSpráva sítěSystém ochrany a bezpečnostiSystém.
Základy algoritmizace a programování
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Sémantická analýza Jakub Yaghob
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
C# - Úvod Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Simulační modely a programové vybavení. Vývoj simulačních programů  Původně pouze strojový kód –Příliš dlouhé, náročné na programátora, obtížné hledání.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
Od zadání úlohy k programu Výpočetní systémy I 8. přednáška.
Dokumentace informačního systému
Úvod do JavaScriptu JavaScript je p JavaScript je programovací jazyk, který se používá na webových stránkách. JavaScript je typu KLIENT - KLIENT To znamená,
Algoritmizace a programování Vývojové diagramy - 03
S O F T W A R E Šablona 32 VY_32_INOVACE_6_5_Operační systémy.
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Operační systémy.
Algoritmizace a programování Úvod do Delphi - 04 Mgr. Josef Nožička IKT Algoritmizace a programování
Databázové modelování
doc. RNDr. Zdeněk Botek, CSc.
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
PHP PHP - úvod - 02 Mgr. Josef Nožička IKT PHP
1 Programování a p. jazyky Postup při tvorbě programu (systému) –strategie –analýza ( konceptuální modely) Datová Procesní –návrh (i/o, výjimky, algoritmus)
OPERAČNÍ SYSTÉMY ICT – Mgr. Milan Šimek. Nejznámější operační systémy DOS – textové rozhraní OS/2 – podobný Windows, ovládán hlasem UNIX – stabilní, otevřený,
Rozhodování ve veřejné správě Přednáška M. Horáková.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
doc. RNDr. Zdeněk Botek, CSc.
Základní pojmy v informatice Bohumil Bareš. Základní pojmy Data – soubory, jiný výraz pro „informace“, jsou to údaje, které vypovídají o světě, mohou.
Visual Basic - programování
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
OPERAČNÍ SYSTÉM.
Úvod do programování Vyučující: Mgr. Vítězslav Jersák
Technika počítačů 3. Mikroprocesory © Milan Keršlágerhttp:// Obsah: ●
Překladače Vnitřní struktura překladače © Milan Keršláger
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 4: Programovací jazyk C Bc. Radek Libovický.
Algoritmizace a programování Algoritmy 1 - Úvod. Základní pojmy Počítačový program Počítačový program zápis zdrojového kódu, kterému rozumí počítač zápis.
Překladače 1. Překladače a programovací jazyky © Milan Keršlágerhttp:// Obsah:
Bezdrátové senzorické sítě Operační systémy a vývojové prostředky Ing. David Široký Katedra informatiky a výpočetní techniky Fakulta aplikovaných.
Překladače 2. Vnitřní struktura překladače © Milan Keršlágerhttp:// Obsah: ● činnost.
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
Tým 32, varianta b/4/I.  Jakub Kadlubiec  Roman Pijáček  Petr Pliska  Jan Štourač  Václav Tunka (vedoucí)
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
Překladače 6. Sémantická analýza
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Vypracoval / Roman Málek
Programování mikropočítačů Platforma Arduino
Výukový materiál zpracován v rámci projektu
Algoritmizace – základní pojmy
Operační systémy - úvod
Překladače Syntaktická analýza
Výukový materiál zpracován v rámci projektu
Překladače 2. Vnitřní struktura překladače
Operační systémy 9. Spolupráce mezi procesy
Tradiční metodiky vývoje softwaru
OPERAČNÍ SYSTÉMY ICT – Mgr. Milan Šimek.
Tradiční metody vývoje softwaru
Překladače 6. Sémantická analýza
Informační a komunikační technologie 5. ročník
Transkript prezentace:

Operační systémy Vnitřní struktura překladače © Milan Keršláger 29.05.2018 http://www.pslib.cz/ke/slajdy http://creativecommons.org/licenses/by-nc-nd/3.0/

Jak naprogramovat překladač z počátku „opravdoví programátoři“ relativně málo rozsáhlé a méně komplexní kódy programování v JSA vyžadovalo zkušenosti 1969 – strukturované programování (Dijkstra) snaha o zvládnutí velkých projektů zpřístupnění programování „laikům“ dělení problému na menší části → dělení práce rozdělení překladače na logické celky zjednodušení kódu, rozdělení problému, záměna

Činnost překladače transformace vstupu na výstup vstupní programovací jazyk např. jazyk C, Pascal, Java, ... výstupní kód strojový kód ve formě spustitelného souboru při své činnosti informuje o průběhu překladu generuje chybová hlášení

Konverzační překladače tzv. interaktivní umožňují programátorovi přímo upozorňovat na chyby ladit program (inspekce proměnných) typické pro současná IDE rozhraní propojení překladače s editorem při nalezení chyby na ni umístí kurzor problémy s komplikovanými strukturami dopředné definice, rekurzivní zpracování funkcí, ...

Části překladače přední část provádí analýzu (rozpitvání vstupu) nezávislá na cílovém systému závislá na použitém programovacím jazyce zadní část provádí syntézu (vytvoření výstupu) závislá na cílovém systému typ CPU (x86, ARM, MIPS) typ OS (Windows, Linux, Symbian)

Fáze překladu Přední část lexikální analýza zdrojový kód → posloupnost symbolů syntaktická analýza symboly → příkazy, proměnné, funkce apod. sémantická analýza přiřazení významu optimalizace kódu zvýšení efektivity kódu generování cílového kódu Zadní část

Průchody překladače jednoprůchodové překladače každá fáze překladu se provede jen jednou jednoduché programovací jazyky víceprůchodové překladače opakování určité fáze překladu vzniká mezikód (interní kód) používá interní jazyk překladače typicky optimalizace jednodušší implementace určité fáze překladu nižší systémové nároky (aktivní jen část překladače)

Zpracování chyb při nalezení chyby by měl překladač: určit místo vzniku chyby soubor, řádek, sloupec (→ konverzační překladač) sdělit typ chyby chybějící deklarace, chybná syntaxe, ... mohou i navrhnout opravu syntaxe a sémantika ztrácí vazbu na pův. kód nutné interně přenášet informaci o místě v kódu tím spíše u víceprůchodových překladačů

Reakce na chyby zastavení na prvním chybě typicky konverzační překladače pokus o zotavení překladač se snaží pokračovat vynechání symbolu načítání, dokud nenaváže na předchozí správný průběh pokus o opravu chyby (např. doplnění symbolu) uživatel vidí více chyb problém zavlečených chyb

Chyby z hlediska uživatele chyby struktury programu při překladu (lexikální, syntaktické) zajímavé pro studium překladačů běhové chyby zjistitelné až za běhu programu dělení nulou (překladač může vydat varování) logické chyby formální správnost programu, ale chybné výsledky prakticky nelze překladačem odhalit

Křížová kompilace vytváření cílového kódu pro jinou platformu výměna zadní části překladače po překladu nelze přímo spustit transport na cílovou platformu užití emulátorů, virtuálních strojů a pod. praktické důvody pro mobily, PDA, vestavěná zařízení, herní konzole výrobce vydává tzv. SDK někdy není potřeba (např. Java)

Portování programu změna cílové platformy různé zvyklosti, jiný hardware psaní přenositelných programů již při návrhu, výběru jazyka i programování pravidla jsou známá, ale programátoři jsou... některé platformy portování usnadňují unixové systémy (Linux: PC, ARM, MIPS, ...) Windows hřeší na majoritu PC systémů dnes konkurenční nevýhoda (→ ARM netbooky)

Editory pro překladače unixové systémy: vim, Emacs „programátoři sobě“ vznik integrovaných prostředí (IDE) již v textovém prostředí (Turbo Pascal) komplexní vývojové systémy pro GUI návrhář formulářů, speciální editor propojený s konverzačním překladačem, propojení s debuggerem vytváření struktogramů rozlišení začátečník a pokročilý, děti

Zvýrazňování syntaxe vizuální zvýraznění zdrojového kódu usnadňuje orientaci programátora využití překladače poměrně komplikované typicky konverzační překladače využití regulárních výrazů jednodušší, ale velmi efektivní není potřeba překladač editor typicky podporu pro více jazyků

Generátory překladačů lex, flex lexikální analyzátor yacc, bison syntaktický analyzátor self-hosting compiler Co bylo dřív? Vejce nebo slepice? bootstraping v čem je napsán, co zpracovává, co je výstup