Preklada jeho funkcia a truktra spsob prace Preklada
Prekladač, jeho funkcia a štruktúra, spôsob prace
Prekladač n Program, ktorý transformuje (preloží) program – – n n n V zdrojovom jazyku – zdrojový program Do cieľového jazyka – cieľový program Samotný prekladač, ako program, je napísaný v implementačnom jazyku Zdrojový jazyk je zvyčajne „vyšší“, cieľový zvyčajne „nižší“, vzhľadom na strojový jazyk Implementačný jazyk – jazyk, ktorý musí „poznať“ počítač, na ktorom sa realizuje preklad
Zobrazenie prekladača vzhľadom na jazyky ZJ CJ IJ
Zobrazenie prekladača vzhľadom na jazyky. Príklad. n Príklad – – – n ZJ – Pascal CJ – strojový jazyk počítača PX IJ – jazyk C Predpoklad – „počítač“ PX „pozná“ jazyk C (má prekladač jazyka C)
Zobrazenie Prekladač jazyka Pascal Strojový kód PX C
Použitie hosťujúceho počítača n n Hosťujúci počítač zabezpečí preklad z C do strojového kódu počítača PX Toto umožní písať prekladač v C
Použitie hosťujúceho počítača Cont 1 Prekladač jazyka C Strojový kód PX
Použitie hosťujúceho počítača Cont 2 Prekladač jazyka Pascal Prekladač Jazyka Pascal Stroj_kód PX C Prekladač Jazyka C Stroj_kód PX C Stroj_kód PX Stroj_kód hosť_poč
Bootstrap V implementačnom jazyku sa napíše prekladač vybranej časti jazyka ZJ n Kompletný preklač sa napíše v samotnom jazyku ZJ n
Spôsob práce prekladača n n Vstup – reťazec znakov reprezentujúcich ZP Výstup – – n cieľový program – kompilátor alebo realizácia zdrojového programu – interprét Spôsob práce – – kompilačný alebo interpretačný
Kompilátor Vstupné údaje Zdrojový program Kompilátor Cieľový program Výstupné údaje
Interprét Vstupné údaje Zdrojový program Interprét Výstupné údaje
História n n 1950 – pre FORTRAN Veľmi dobre rozpracovaná problematika Rozpracované metódy a techniky majú podstatne širšiu použiteľnosť než sú samotné prekladače V súčasnosti – – – JIT (Just-In-Time) kompilácia „stiahnutých“ Java appletov Optimalizovaný kód – ak sa požaduje „vysoká rýchlosť“ a malý rozsah – videorecorder, mobil Kompilačné techniky sa používajú vo web browseroch, postscriptových interpretoch, automatických prekladoch, atď.
Preklad a Štruktúra prekladača n n n Preklad nie je priamočiary proces – vyžaduje si celý rad viac alebo menej samostatných činností Prekladač musí najprv zistiť a „pochopiť“, čo je na vstupe – robí to časť prekladača - analyzátor Analyzátor – analyzuje ZP a zisťuje či je napísaný podľa pravidiel zdrojového jazyka Informácie získané pri analýze tvoria základ preklad ZP do CP – jeho syntézu, ktorú zabezpečuje zodpovedajúca časť prekladača Syntetizátor – zabezpečuje samotnú syntézu CP, prípadne aj jeho realizáciu
Grafická reprezentácia prekladača Tabuľka symbolov ZP Lexikálna analýza Syntaktická analýza Spracovanie sémantiky/ Sémantická reprezáentácia Ošetrenie chýb Generovanie Cieľového programu CP
Analýza a syntéza prekladu n Analýza je rozdelená na 2 úrovne – Lexikálnu n vstupom je reťazec znakov n Výstupom reťazec lexikálnych jednotiek – Syntaktickú n Vstupom je reťazec lexikálnych jednotiek n Výstupom je reťazec syntaktických štruktúr
Komunikácia medzi časťami prekladača n n Okrem „štandardných mechanizmov“ je dôležitým prvkom Tabuľka symbolov, ktorá je vlastne spoločnou pamäťou, ktorú zdielajú a využívajú jednotlivé časti prekladača ako pre vlastnú potrebu, tak pre vzájomnú komunikáciu. Každá časť prekladača vykonáva predpísanú činnosť a v prípade výskytu chyby v ZP – hovoríme o „ošetrení“ chýb – oznámi sa chyba a pokračuje sa v práci s tým, že už sa vie, že sa vyskytla chyba, ktorá má svoje dôsledky
Opis zdrojového jazyka n n n Zdrojový jazyk (ale nielen zdrojový) má presné pravidlá, ktoré sa musia pri písaní programu dodržiavať a hovoríme im syntaktické alebo gramatické pravidlá Na opis – špecifikáciu programovacích jazykov je rozpracovaný formálny matematický aparát, ktorý umožňuje nielen rýchlu a efektívnu kontrolu gramatickej správnosti programu, ale aj automatizáciu konštruovania jednotlivých častí prekladača. Vytvorené metódy a techniky opisu - špecifikácie jazykových konštrukcií a následnej automatickej konštrukcii jednotlivých častí prekladača presahujú oblasť prekladačov, a majú ďaleko všeobecnejšie použitie.
Literatúra Steven John Metsker : Building Parsers With Java™. © 2001 / 0 -201 -71962 -2 / Addison Wesley Professional Charles Fischer, University of Wisconsin : Crafting a Compiler with C, Richard Le. Blanc, Georgia Institute of Technology, © 1991 / 0 -80532166 -7 / Addison-Wesley
Literatúra Alfred V. Aho, Jeffrey D. Ullman, Compilers, © 1986 / 0 -201 -10088 -6 / Addison-Wesley Dick Grune, Henri E. Bal, Ceriel J. H. Jacobs, and Koen G. Langendoen : Modern Compiler Design, John Wiley & Sons, Ltd. , pp. 736 + xviii, 2000.
Literatúra Molnár L. , Češka, M. , Melichar, B. : Gramatiky a jazyky, Bratislava, ALFA, 1987. Molnár L. : Programovacie jazyky implementácia. Bratislava, EF, 1983.
OK
- Slides: 23