Překladač a jeho struktura - Překladače, přednáąka č. 1
Transkript
Co je to překladač? Typy překladačů Hlavní části překladače Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava [email protected] http://fpf.slu.cz/~vav10ui Poslední aktualizace: 23. září 2008 Zpracování chyb Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Definice překladače Definice (Překladač) Překladač je program, který k libovolnému programu PZ (zdrojový program) v jazyku JZ (zdrojový jazyk) vytvoří program PC (cílový program) v jazyku JC (cílový jazyk) se stejným významem. Překladač tedy realizuje zobrazení z jazyka JZ do jazyka JC . Pz −→ nad Jz Pc nad −→ Jc Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Definice překladače Definice (Překladač) Překladač je program, který k libovolnému programu PZ (zdrojový program) v jazyku JZ (zdrojový jazyk) vytvoří program PC (cílový program) v jazyku JC (cílový jazyk) se stejným významem. Překladač tedy realizuje zobrazení z jazyka JZ do jazyka JC . Pz −→ nad Jz Pc nad −→ Jc Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Typy překladačů z hlediska existence cílového kódu kompilátor (generační překladač) interpret (interpretační překladač) hybridní Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Okolí Typy překladačů z hlediska existence cílového kódu zdrojový program ? kompilátor zdrojový program data cílový program- ? operační systém výsledky data ? ? interpret výsledky ? ? Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Okolí Typy překladačů z hlediska existence cílového kódu Vlastnost Rychlost běhu cílového programu Rychlost spuštění cílového programu Rychlost překladu Spotřeba paměti – operační (při běhu) Spotřeba paměti – cílový soubor na pam. médiu Přenositelnost kódu mezi SW platformami Možnosti optimalizace Nezávislost na překladači Kompilátor lepší lepší Interpret lepší lepší lepší lepší lepší lepší Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Typy překladačů z hlediska komunikace s uživatelem klasický konverzační – rozlišujeme jazyk a metajazyk, dvě části: řidicí část interpretační (kompilační) část Okolí Co je to překladač? Typy překladačů Hlavní části překladače Fáze překladu 1 lexikální analýza, 2 syntaktická analýza, 3 sémantická analýza, 4 optimalizace kódu, 5 generování cílového kódu nebo interpretace, 6 hlášení o chybách, 7 informace o překladu. Zpracování chyb Okolí Co je to překladač? Typy překladačů Hlavní části překladače Fáze překladu 1 lexikální analýza, 2 syntaktická analýza, 3 sémantická analýza, 4 optimalizace kódu, 5 generování cílového kódu nebo interpretace, 6 hlášení o chybách, 7 informace o překladu. Zpracování chyb Okolí Co je to překladač? Typy překladačů Hlavní části překladače Fáze překladu Přední část překladače: 1 2 3 lexikální analýza, syntaktická analýza, sémantická analýza, Zadní část překladače: 1 2 optimalizace kódu, generování cílového kódu nebo interpretace. Zpracování chyb Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Průchody překladu Definice (Průchod) Průchodem nazýváme krok činnosti překladače, ve kterém je zpracován celý vstupní soubor kroku na výstupní soubor kroku (vstupní soubor kroku nemusí být totožný se vstupním souborem překladače, stejně tak výstupní soubor ještě nemusí být cílový kód). Pojmy mezikód, interní kód, interní forma programu, intermediální kód, jednoprůchodový překladač, víceprůchodový překladač. Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Průchody překladu Definice (Průchod) Průchodem nazýváme krok činnosti překladače, ve kterém je zpracován celý vstupní soubor kroku na výstupní soubor kroku (vstupní soubor kroku nemusí být totožný se vstupním souborem překladače, stejně tak výstupní soubor ještě nemusí být cílový kód). Pojmy mezikód, interní kód, interní forma programu, intermediální kód, jednoprůchodový překladač, víceprůchodový překladač. Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Informace o chybě Překladač přijde na chybu ve zdroji: podá uživateli tyto informace: kde v programu se chyba nachází (např. číslo řádku a pozice na něm), typ chyby (např. „proměnná tohoto názvu nebyla deklarovánaÿ, „chyba v syntaxi operátoruÿ, . . . ), některé překladače dokážou navrhnout možnosti nápravy chyby. Překladač by se rozhodně neměl pokoušet chyby sám opravovat bez okamžitého informování uživatele. Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Lexikální analyzátor Chyby typu „neznámý symbolÿ, například 12YT. Není problém zjistit umístění ve zdroji. Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Syntaktický analyzátor Chyby v syntaktické struktuře programu, přehozená a chybějící klíčová slova nebo symboly, například 12 := x; IF x>1 ELSE x := 3; Pokud je ve stejném průchodu s lexikálním, snadno zjistíme umístění ve zdroji. Když ne, zvolíme jeden z těchto způsobů: 1 2 Součástí symbolu nebude jen jeho identifikace a sémantické atributy, ale také další dva atributy určující číslo řádku, na kterém se symbol nachází, a vzdálenost prvního znaku symbolu od začátku řádku. Nadefinujeme speciální typ symbolu, který bude představovat přechod na nový řádek ve zdroji. Tento symbol přidá lexikální analyzátor k výstupu kdykoliv, když narazí na konec řádku ve zdroji (samozřejmě také uvnitř komentářů!). Syntaktický analyzátor má vyhrazený čítač, který zvýší o 1, když ve svém vstupu načte symbol konce řádku, takže má přehled o tom, na kterém řádku zdroje se nachází. Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Sémantický analyzátor Chyby zjistitelné při překladu – nedeklarovaná proměnná použitá ve výrazu, nekompatibilní datový typ, apod. Informace o umístění se zjišťují stejně jako u syntaktické analýzy. Běhové chyby – dělení nulou, přetečení datového typu, nedovolený přístup do paměti, atd. Informaci o umístění ve zdroji obvykle nelze získat, u kompilačního překladače se vypisuje alespoň pozice v cílovém kódu. Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Typologie chyb Chyby na straně uživatele 1 Chyby související se strukturou programu (většinou lexikální nebo syntaktické), ty lze obvykle zjistit už při překladu. 2 Chyby běhové (run-time), například dělení nulou. Souvisí obvykle s momentální hodnotou proměnných a lze je jen těžko zjistit. 3 Chyby logické (chybná posloupnost příkazů, záměna operátorů, překlep v čísle apod.), které při překladu prakticky nelze odhalit. Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Reakce na chybu Překladač reaguje dvěma způsoby: při prvním výskytu chyby se zastaví, provede diagnózu, informuje uživatele a čeká na opravu chyby (Turbo Pascal), pokouší se najít co nejvíce chyb najednou, zastaví se až při určitém maximálním počtu a informuje uživatele o všech objevených chybách popř. o maximálním počtu chyb, které je schopen zobrazit (například C++). Zotavení po chybě Umožňuje opravit více chyb najednou bez nutnosti pokaždé znovu spouštět překladač. Analyzátor načítá prvky ze vstupu naprázdno bez další reakce tak dlouho, dokud se nepodaří navázat na předchozí správný průběh překladu, pak pokračuje běžným způsobem. Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Reakce na chybu Překladač reaguje dvěma způsoby: při prvním výskytu chyby se zastaví, provede diagnózu, informuje uživatele a čeká na opravu chyby (Turbo Pascal), pokouší se najít co nejvíce chyb najednou, zastaví se až při určitém maximálním počtu a informuje uživatele o všech objevených chybách popř. o maximálním počtu chyb, které je schopen zobrazit (například C++). Zotavení po chybě Umožňuje opravit více chyb najednou bez nutnosti pokaždé znovu spouštět překladač. Analyzátor načítá prvky ze vstupu naprázdno bez další reakce tak dlouho, dokud se nepodaří navázat na předchozí správný průběh překladu, pak pokračuje běžným způsobem. Okolí Co je to překladač? Typy překladačů Hlavní části překladače Jazyky překladače jazyk, ve kterém je sám napsán, zdrojový jazyk, který přijímá, cílový jazyk, ve kterém je jeho výstup. Zpracování chyb Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Generátory překladačů Jak vytvořit překladač v assembleru ve vyšším programovacím jazyce s použitím generátoru překladačů – dodáme popis struktury jazyka (gramatika) a popis výstupu generátory lexikálního analyzátoru – Lex, Flex generátory syntaktického analyzátoru – Yacc, Bison Okolí Co je to překladač? Typy překladačů Hlavní části překladače Zpracování chyb Aplikace pro jinou platformu Programování aplikací Kompilátor překládá aplikaci do cílového jazyka pro jiný operační systém než na kterém provádí překlad. Používá se u aplikací pro mobily, PDA, roboty, herní konzole. Portování = přenos již existující aplikace nebo operačního systému na novou platformu (softwarovou nebo hardwarovou). Okolí
Podobné dokumenty
Principy moderních překladačů, virtuální stroj
Víceprůchodový překladač má tyto výhody: –snadněji se vytváří a opravuje, lze také jednodušeji rozdělit práci mezi více programátorů –při překladu může být v paměti pouze ta část překladače, která ...
VíceT - Publi.cz
Vyberte si libovolnou časovou řadu obsahující minimálně 50 pozorování a spočtěte pro ni hodnoty aritmetického průměru, rozptylu, autokovarianční a autoregresní funkce pro k = 1, 2, ...,10. K výpočtu
Více1.Charakterizujte křížový překladač Překlad pro jiný počítač, než na
Algoritmy pro optimalizaci jsou často složité – mají proto vlastní průchod, často i více průchodů. Zajímají nás meziprodukty – mezipřeklady: Průchod -> 1. meziprodukt … n. průchod Finální pro...
VíceCharakterizujte křížový překladač Objasněte pojem silikonový
Jaký je nejvyšší možný počet stavů deterministického KA, má-li ekvivalentní nederm. KA 5 stavů Popište tvar identifikátoru levou lineární gramatikou Zapište pravou lineární gramatiku čísla real v s...
VícePDF verze
jsou ale různé, přesto program pracuje stejně. Mono Když spustíme program_mono.exe vykoná se program kompilovaný Mono kompilátorem pod .NET frameworkem. Když chceme program spustit pomocí Mono fram...
VíceMX-B200 - BONUM CB, sro
*2 Nejlepší dosažený čas A4 kopírování při podávání papíru z 1. kazety, umístění originálu na sklo a připraveném stroji. Může se lišit podle stavu stroje a provozních podmínek. *3 Lze změnit na 600...
VíceBrožura Xerox 152
SharePoint, DocuShare, LotusNotes a řada dalších. S trochou nadsázky lze říci, že neexistuje aplikace pro správu dokumentů, do které by nebyl k dispozici OneTouch „link“. Unikátní technologie Techn...
Více13 FormalniPřeklad
Př. KPA, který čte binární čísla a vynechává nevýznamové nuly (Větve ohodnoceny vstup/výstup ) Pozn. Přeloží ale i jiné řetězce než bin. čísla (vidíte to?)
Více