Překladače 2. Vnitřní struktura překladače

Slides:



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

VÝVOJ PROGRAMOVACÍCH JAZYKŮ PERSPEKTIVY ELEKTRONIKY 3. Celostátní seminář, 18. března 2003 Ing. Pavel Pokorný UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ Fakulta technologická.
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ý.
Typy programů operační systémy programy pro práci se soubory
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.
Lestes C++ compiler. Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr.
25. ALGORITMIZACE A PROGRAMOVÁ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í
Štěpán Lískovec, 4.A.  =základní programové vybavení počítače (tj.software)  hlavní úkol:  A, zajistit uživateli možnost ovládat PC  B, vytvořit pro.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
PHP – Základy programování
Sémantická analýza Jakub Yaghob
Operační systémy.
Operační systémy.
Roman Valeš projekt AVT. Cíl práce Obeznámení s programovacím jazykem Java Práce s vývojovými nástroji Hierarchie kódu Androidu Vytvoření Android aplikace.
C# - Úvod Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
OPERAČNÍ SYSTÉMY Správa zdrojů Historie Funkce Ovládání počítače
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
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
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Operační systémy.
Vytváření a realizace algoritmů Algoritmy a datové struktury
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Operační systémy Mgr. Ludmila Faltýnková EU OPVK ICT2-4/Inf12 Základní škola Olomouc, Heyrovského 33 Určeno pouze pro výuku Žádná část ani celek nesmí.
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)
Zkušenosti s nasazením svobodného software při výuce
Operační systémy. Výpočetní systém Stroj na zpracování dat vykonávající samočinně předem zadané operace.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
OPERAČNÍ SYSTÉMY.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
doc. RNDr. Zdeněk Botek, CSc.
PHP Programy pro tvorbu WWW stránek - 01
Visual Basic - programování
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
OPERAČNÍ SYSTÉM.
Operační systémy cvičení 1 © Milan Keršláger Obsah: náplň předmětu,
NÁZEV ŠKOLY:Základní škola a mateřská škola Bohdalov ČÍSLO PROJEKTU: CZ.1.07/1.4.00/ ŠABLONA:III/2 TÉMATICKÁ OBLAST:Informační a komunikační technologie.
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ý.
Překladače Optimalizace © Milan Keršláger
Hybridní mobilní aplikace pro Android Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu.
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:
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.
ÚVOD DO PŘEDMĚTU INFORMAČNÍ TECHNOLOGIE. OPERAČNÍ SYSTÉM Je v informatice základní programové vybavení počítače (tj. software), které je zavedeno do paměti.
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.
XML a datový standard Zdeněk Jirkovec Softwarové Aplikace a systémy.
Vypracoval / Roman Málek
Programování mikropočítačů Platforma Arduino
Operační Systém Operační systém je v informatice základní programové vybavení počítače (tj. software), které je zavedeno do paměti počítače při jeho.
OPERAČNÍ SYSTÉMY Číslo projektu CZ.1.07/1.5.00/ Název školy
Vlastnosti souborů Jaroslava Černá.
Operační systémy - úvod
Překladače Syntaktická analýza
Výukový materiál zpracován v rámci projektu
Hybridní mobilní aplikace pro Android
Operační systémy Vnitřní struktura překladače
Operační systémy 9. Spolupráce mezi procesy
Překladače 6. Sémantická analýza
Transkript prezentace:

Překladače 2. Vnitřní struktura překladače Obsah: činnost překladače, části překladače fáze překladu, jednoprůchodové a víceprůchodové překladače chyby, vývojové prostředí (IDE), zvýrazňování syntaxe platforma, virtualizace, emulace portování, portabilita © Milan Keršláger http://www.pslib.cz/ke/slajdy 22.2.2012 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í

Klasické zpracování editor zápis ve zdrojovém kódu v programovacím jazyce výsledek uložen do souboru překladač samostatný program čte zdrojový soubor, vytvoří spustitelný soubor v prehistroii (sálové počítače, cca do 70. let) zápis na papír, operátor přepsal, vytiskl kontrola, oprava, překlad, výpis chyb, odevzdání

Interaktivní překladač též „konverzační překladač“ umožňuje 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 → intermediální kód 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 pro jednoduché programovací jazyky tj. jen jednou se načte vstupní soubor pro krok překladu 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 typicky číslo řádku 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

Vývojová prostředí unixové systémy: editor 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

Eclipse

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ů

Platforma souhrn vlastností hardware a software zajišťuje běh programů platforma podle hardware typ procesoru, typ a ovládání I/O zařízení platforma podle software abstrakce I/O pomocí jádra operačního systému knihovny, běhové prostředí (Java) použitý programovací jazyk, framework (vývoj + běh) například: Java, .NET, Android, Symbian, Windows, Flash IBM PC a kompatibilní, ARM (mobilní telefony), MIPS...

Emulace, virtualizace emulátor program, který simuluje činnost (jiného) počítače může to být i jiná platforma nižší výkon, protože se rozdíly řeší softwarově virtualizace program či celý systém běží odděleně od zbytku virtualizovaný systém neví o tom, že HW sdílí s jiným zajišťuje jádro, nutná podpora v CPU základní podpora (32bitový CPU Intel 386 a novější) rozšířená podpora (x64 – Pacifica, Vanderpool) virtualizace nepřizpůsobených systémů

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í v zásadě je převod na jinou platformu také překlad pravidla jsou známá, ale programátoři jsou... některé platformy portování usnadňují portabilita je dnes konkurenční výhoda unixové systémy (Linux: PC, ARM, MIPS, ...) Windows hřeší na majoritu PC systémů

Open system otevřený (počítačový) systém 80. léta → unixové systémy vydělení proti mainframům a minipočítačům neplést s open source software open system může být i komerční a s uzavřeným kódem umožňuje interoperabilitu schopnost spolupráce s ostatními systémy usnadňuje portabilitu snadno zajištěno tak, že: vše je detailně zdokumentováno dokumentace je volně k dispozici manuálové stránky, zdrojový kód (program, jádro, knihovny)

Kód nezávislý na platformě skriptovací jazyky interpret je přizpůsobený platformě zdrojový kód programu zůstává stejný HTML, JavaScript bytecode binární kód nezávislý na platformě Java bytecode i tak problémy s I/O (ovládání hardware)

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