Kommentit
- Liian laaja, ainakin " Kuinka se toimii " osa. Aiheesta on kirjoitettu kokonaisia kirjoja.
- fi.wikipedia.org/wiki/Compiler olisi Wikipedia-linkki, joka on triviaali löytää, mitä erityisesti ihmettelet? Kysymys on riittävän laaja, jotta minulla olisi ' kiusaus antaa älykäs alec-vastaus, " kääntäjät kääntävät koodin kieleltä toiselle , ", koska se on yleinen ajatus, jolla on paljon vivahteita, kun alkaa tarkastella, mihin se todella liittyy.
- Kyllä ja mielestäni siihen on vastattu melko hyvin.
- Kaikki selitykset kääntäjän toiminnasta ovat joko liian laajoja tai liian monimutkaisia. Se ' oli monimutkainen aihe, ja kääntäjäluokat olivat vaikeimpia tietokoneisiin liittyviä kursseja, joita olen koskaan käynyt.
- @David Tietenkin kääntäjät ovat monimutkaisia, etkä voi selitä kaikki yksityiskohdat siitä, miten he työskentelevät täällä. Olen kuitenkin varma, että sinulla oli korkeatasoinen ymmärrys kääntäjän toiminnasta tai toiminnasta, ennen kuin aloitit kääntäjäkurssin.
Vastaa
Kääntäjä on ohjelma, joka kääntää toisen ohjelman lähdekoodin ohjelmointikielestä suoritettavaksi koodiksi.
Lähdekoodi on tyypillisesti korkean tason ohjelmointikielellä (esim. Pascal, C, C ++, Java, Perl, C # jne.). Suoritettava koodi voi olla sarja koneohjeita, jotka keskusyksikkö voi suorittaa suoraan, tai se voi olla väliesitys, jonka virtuaalikone tulkitsee (esim. Java-tavukoodi).
Lyhyesti sanottuna kääntäjä muuntaa ohjelman ihmisen luettavasta muodosta koneellisesti luettavaan muotoon.
Kääntäjän toiminnasta on todellakin monimutkaista. Aiheesta on kirjoja ja yliopistokursseja. Yritän hahmotella lyhyesti prosessin päävaiheet, mutta tämä on erittäin pintakuvaus.
- Lexing – hajota ohjelman teksti ”tokeneiksi”. Tunnukset ovat ohjelmointikielen ”sanoja”, kuten tunnisteet (avainsanat, muuttujien nimet, funktioiden nimet jne.) Tai operaattorit (=, *, & jne.) .
- Jäsennys – muuntaa tunnussekvenssi jäsentelypuuksi, joka on tietorakenne, joka edustaa erilaisia kielirakenteita: tyyppideklaraatioita, muuttujailmoituksia, funktiomääritelmiä, silmukoita, ehdollisia, lausekkeita jne. >
- Optimointi – arvioi vakiolausekkeet, optimoi käyttämättömät muuttujat tai tavoittamaton koodi, pura silmukat mahdollisuuksien mukaan jne.
- Käännä jäsennyspuu koneohjeiksi (tai JVM-tavukoodeiksi).
Korostan jälleen kerran, että tämä on hyvin lyhyt kuvaus. Nykyaikaiset kääntäjät ovat erittäin älykkäitä ja siten erittäin monimutkaisia.
Kääntäjä on tietokoneohjelma (tai ohjejoukko), joka muuntaa ohjelmointikielellä (lähdekielellä) kirjoitetun lähdekoodin toiselle tietokoneelle ( kohdekieli, jolla on usein binäärimuoto, joka tunnetaan kohdekoodina) Yleisin syy lähdekoodin muuntamiseen on suoritettavan ohjelman luominen.
Kääntäjät yhdistävät lähdeohjelmat korkean tason kielillä taustalla olevalla laitteistolla. Kääntäjä vaatii: