Komentáře
- Příliš široké, alespoň " Jak to funguje " část. Na toto téma jsou napsány celé knihy.
- en.wikipedia.org/wiki/Compiler by byl odkaz na Wikipedii, který je triviální najít, co konkrétně vás zajímá? Otázka je dostatečně široká na to, abych byl ' pokoušen dát chytrou odpověď alec, " překladačů překládat kód z jednoho jazyka do druhého , " protože to je obecná myšlenka, která má v sobě spoustu nuancí, jakmile se člověk začne dívat na to, co to opravdu zahrnuje.
- Ano a myslím bylo na ni zodpovězeno docela dobře.
- Jakékoli vysvětlení toho, jak překladač funguje, bude buď příliš široké, nebo příliš komplikované. Je to ' komplikovaný předmět a kurzy kompilátorů byly nejtěžší kurzy související s počítačem, jaké jsem kdy absolvoval.
- @David Překladače jsou samozřejmě komplikované a vy nemůžete vysvětlete všechny podrobnosti o tom, jak zde pracují. Jsem si však jistý, že jste na základní úrovni porozuměli tomu, co je kompilátor nebo jak funguje, než jste absolvovali kurz kompilátoru.
Odpovědět
Kompilátor je program, který převádí zdrojový kód jiného programu z programovacího jazyka do spustitelného kódu.
Zdrojový kód je obvykle v programovacím jazyce vysoké úrovně. (např. Pascal, C, C ++, Java, Perl, C # atd.). Spustitelným kódem může být posloupnost strojových instrukcí, které lze provést přímo CPU, nebo to může být mezilehlá reprezentace, která je interpretována virtuálním strojem (např. Bajtový kód Java).
Stručně řečeno, překladač převádí program z formátu čitelného na člověka do formátu čitelného strojem.
To, jak překladač funguje, je skutečně komplikované. Na toto téma existují knihy a univerzitní kurzy. Pokusím se stručně nastínit hlavní fáze procesu, ale bude to velmi povrchní přehled.
- Lexing – rozdělte text programu na „tokeny“. Tokeny jsou „slova“ programovacího jazyka, například identifikátory (klíčová slova, názvy proměnných, názvy funkcí atd.) Nebo operátory (=, *, & atd.) .
- Analýza – převede sekvenci tokenů na analyzovaný strom, což je datová struktura představující různé jazykové konstrukce: deklarace typů, deklarace proměnných, definice funkcí, smyčky, podmíněné výrazy, výrazy atd.
- Optimalizace – vyhodnoťte konstantní výrazy, optimalizujte nepoužívané proměnné nebo nedosažitelný kód, rozviňte smyčky, pokud je to možné atd.
- Přeložte syntaktický strom do instrukcí stroje (nebo bajtového kódu JVM).
Znovu zdůrazňuji, že se jedná o velmi krátký popis. Moderní překladače jsou velmi chytré a v důsledku toho velmi komplikované.
Kompilátor je počítačový program (nebo sada pokynů), který transformuje zdrojový kód napsaný v programovacím jazyce (zdrojový jazyk) do jiného počítačového jazyka ( cílový jazyk, často s binární formou známou jako objektový kód). Nejběžnějším důvodem, proč chcete transformovat zdrojový kód, je vytvořit spustitelný program.
Překladače překlenují zdrojové programy v jazycích vysoké úrovně se základním hardwarem. Kompilátor vyžaduje: