Vaihe vs. kuljetus kääntäjässä
Kääntäjä on yleensä tietokoneohjelma, joka lukee yhdellä kielellä kirjoitetun ohjelman, jota kutsutaan lähdekieleksi, ja kääntää sen toiselle kielelle, jota kutsutaan kohdekieleksi. Lähdekieli oli perinteisesti korkean tason kieli, kuten C ++, ja kohdekieli oli matala, kuten kokoontumiskieli. Joten yleensä kääntäjiä voidaan pitää kääntäjinä, jotka kääntävät kieleltä toiselle. Pass ja Phase ovat kaksi termiä, joita käytetään usein kääntäjien kanssa. Kääntäjän läpäisyjen lukumäärä on kuinka monta kertaa se menee lähteen (tai jonkinlaisen esityksen muodon) yli. Kääntäjä on jaoteltu osiin rakentamisen helpottamiseksi. Vaihetta käytetään usein kutsumaan tällaista kääntäjän yhtä itsenäistä osaa.
Mikä on pass kääntäjässä?
Vakio tapa luokitella kääntäjät on ”läpäisy” lukumäärä. Yleensä kääntäminen on suhteellisen paljon resursseja vaativaa prosessia, ja aluksi tietokoneilla ei ollut riittävästi muistia sellaisen ohjelman pitämiseen, joka suoritti koko työn. Varhaisten tietokoneiden laitteistoresurssien rajoituksen vuoksi kääntäjät jaettiin pienempiin alaohjelmiin, jotka tekivät osittaisen tehtävänsä menemällä lähdekoodin läpi ("läpäissyt" lähteen tai muun muun muodon) ja suorittivat analyysin , muunnokset ja käännöstehtävät erikseen. Joten tästä luokituksesta riippuen kääntäjät tunnistetaan yksipäästöisiksi tai monipäästöisiksi kääntäjiksi.
Kuten nimestä voi päätellä, yhden pääsyn kääntäjät kokoontuvat yhdellä kertaa. Yhden pass-kääntäjän kirjoittaminen on helpompaa, ja ne myös suorittavat nopeammin kuin multi-pass-kääntäjät. Siksi, jopa silloin, kun sinulla oli resurssirajoituksia, kielet suunniteltiin siten, että ne voidaan koota yhdellä kerralla (esim. Pascal). Toisaalta tyypillinen monipäästöinen kääntäjä koostuu useista päävaiheista. Ensimmäinen vaihe on skanneri (tunnetaan myös nimellä leksinen analysaattori). Skanneri lukee ohjelman ja muuntaa sen merkkijonoksi. Toinen vaihe on jäsentäjä. Se muuntaa tunnusmerkkijonon jäsentäväksi puuksi (tai abstraktiksi syntaksipuuksi), joka kaappaa ohjelman syntaktisen rakenteen. Seuraava vaihe tulkitsee syntaktisen rakenteen semantiikan. Koodin optimointivaiheet ja lopullinen koodinmuodostusvaihe seuraavat tätä.
Mikä on vaihe kääntäjässä?
Termi vaihe tulee esiin usein, kun puhutaan kääntäjien rakentamisesta. Alun perin kääntäjät olivat kaikki yksinkertaiset kappaleet yksittäisistä, monoliittisista ohjelmistoista, jotka yksi henkilö oli kirjoittanut yksinkertaisen kielen kokoamiseksi. Mutta kun käännettävän kielen lähdekoodista tulee monimutkainen ja suuri, kääntäjä jaettiin useisiin (suhteellisen riippumattomiin) vaiheisiin. Eri vaiheiden käytön etuna on, että kääntäjän kehitys voidaan jakaa kehittäjäryhmän kesken. Lisäksi se parantaa modulaarisuutta ja uudelleenkäyttöä sallimalla vaiheiden korvaamisen parannetuilla tai lisävaiheilla (kuten lisäoptimoinnit) lisäämällä kääntäjään. PQCC (Production Quality Compiler-Compiler Project) esitteli kokoamisen jakamisen vaiheisiin prosessi Carnegie Melonin yliopistossa. He esittelivät termit etupää, keskiosa ja takaosa. Suurimmalla osalla kääntäjiä on ainakin kaksi vaihetta. Mutta yleensä takaosa ja etuosa kapseloivat nämä vaiheet.
Mitä eroa vaiheella ja läpäisyllä kääntäjällä on??
Phase ja Pass ovat kaksi termiä, joita käytetään kääntäjien alueella. Hyväksyntä on kerta, jolloin kääntäjä ohittaa (läpikäy) lähdekoodin tai jonkin muun esityksen siitä. Tyypillisesti useimmissa kääntäjissä on ainakin kaksi vaihetta, joita kutsutaan etu- ja takaosaksi, kun taas ne voivat olla joko yksi- tai monipäästöinen. Vaihetta käytetään luokittelemaan kääntäjät rakenteen mukaan, kun taas passilla luokitellaan kääntäjät sen mukaan, miten ne toimivat.