80 likes | 205 Views
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
E N D
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 • http://ulita.ms.mff.cuni.cz/pub/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č Cílovýkód Zdrojovýkód Chybováhlášení
Co je to překladač? O něco formálněji • Mějme vstupní jazyk Lin generovaný gramatikou Gin • Dále mějme výstupní jazyk Lout generovaný gramatikou Gout nebo přijímaný automatem Aout • Překladač je zobrazení Lin→Lout, kde ∀ win∈Lin∃ wout∈Lout. Pro win∉Lin 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 rozhraní .pp zdrojovýkód preprocesor překladač .asm knihovnyobjekty .obj spustitelnýkód linker/loader assembler
Fáze překladače • Průchodypřekladače tabulky backend front end lexikálníanalýza syntaktickáanalýza sémantickáanalýza generovánímezikódu optimalizacemezikódu generováníkódu zdrojovýkód cílovýkód syntaxí řízenýpřeklad obsluhachyb
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