Principy překladačů Překladač Jakub Yaghob
Literatura a slajdy Aho, Sethi, Ullman: Compilers - Principles, Techniques and Tools, Addison-Wesley 1986 Chytil M.: Automaty a gramatiky, SNTL 1984 Muchnick S.S.: Advanced compiler design and implementation, Morgan Kaufman Publishers 1997 ftp://ulita.ms.mff.cuni.cz/predn/PP
Co je to překladač? Naivní představa Černá krabička, která převádí (překládá) zdrojový kód do cílového kódu Překladač Zdrojový kód Cílový kód Chybová hlášení
Co je to překladač? O něco formálněji Mějme vstupní jazyk L in generovaný gramatikou G in Dále mějme výstupní jazyk L out generovaný gramatikou G out nebo přijímaný automatem A out Překladač je zobrazení L in →L out, kde ∀ w in ∈ L in ∃ w out ∈ L out. Pro w in ∉ L in zobrazení neexistuje
Příklady užití technik překladačů Strukturovaný nebo syntax-highlighting editor Pretty-printer Statické kontroly programu LINT Interpretery Překladače modelovacích jazyků Verilog, VHDL Dotazovací jazyky SQL
Překlad programu preprocesorpřekladač assemblerlinker/loader knihovny objekty zdrojový kód.pp.asm.obj spustitelný kód rozhraní
Fáze překladače lexikální analýza optimalizace mezikódu generování kódu syntaktická analýza sémantická analýza generování mezikódu zdrojový kód cílový kód tabulky obsluha chyb front end back end syntaxí řízený překlad Průchody překladače
Nástroje pro vývoj překladačů Generátory parserů Produkují syntaktický analyzátor Obvykle popis bezkontextovou gramatikou Bison, Coco/R, ANTLR Generátory scannerů Produkují lexikální analyzátor Obvykle popis regulární gramatikou Flex Generátory generátorů kódu Produkují překlad pro každou instrukci mezikódu do cílového kódu Model procesoru a jeho popis Mono JIT