Překladač a jeho struktura - Překladače, přednáąka č. 1

Transkript

Překladač a jeho struktura - Překladače, přednáąka č. 1
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

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íce

T - Publi.cz

T - 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íce

1.Charakterizujte křížový překladač Překlad pro jiný počítač, než na

1.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íce

Charakterizujte křížový překladač Objasněte pojem silikonový

Charakterizujte 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íce

PDF verze

PDF 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íce

MX-B200 - BONUM CB, sro

MX-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íce

Brožura Xerox 152

Brož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íce

C3400n

C3400n Maximální zatížení tiskárny

Více

13 FormalniPřeklad

13 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