Phase vs Pass kääntäjässä
Yleensä kääntäjä on tietokoneohjelma, joka lukee yhdellä kielellä kirjoitetun ohjelman, jota kutsutaan lähdekieleksi, ja kääntää sen toiselle kielelle, jota kutsutaan kohdekieleksi. Perinteisesti lähdekieli oli korkean tason kieli, kuten C++, ja kohdekieli oli matalan tason kieli, kuten kokoonpanokieli. Joten yleensä kääntäjiä voidaan pitää kääntäjinä, jotka kääntävät kielestä toiseen. Pass ja Phase ovat kaksi termiä, joita käytetään usein kääntäjien kanssa. Kääntäjän kulkujen lukumäärä on kuinka monta kertaa se käy lähteen (tai jonkin sen esityksen) yli. Kääntäjä on jaettu osiin rakentamisen helpottamiseksi. Vaihetta käytetään usein kutsumaan tällaista yksittäistä kääntäjän itsenäistä osaa.
Mikä on passi kääntäjässä?
Tavallinen tapa luokitella kääntäjät on "päästien" lukumäärä. Yleensä kääntäminen on suhteellisen resursseja vaativa prosessi, ja alun perin tietokoneissa ei ollut tarpeeksi muistia tällaisen ohjelman säilyttämiseen, joka teki koko työn. Tästä varhaisten tietokoneiden laitteistoresurssien rajoituksesta johtuen kääntäjät jaettiin pienempiin aliohjelmiin, jotka suorittivat osittaisen tehtävänsä käymällä läpi lähdekoodin (syöttämällä lähdekoodin tai jonkin muun muodon siitä) ja suorittamalla analyysin., muunnokset ja käännöstehtävät erikseen. Joten tästä luokittelusta riippuen kääntäjät tunnistetaan yksikierrosiksi tai monivaiheisiksi kääntäjiksi.
Kuten nimestä voi päätellä, yksivaiheiset kääntäjät kääntävät yhdellä kierroksella. Yksikierroskääntäjä on helpompi kirjoittaa ja ne toimivat myös nopeammin kuin monikierroskääntäjät. Siksi jopa silloin, kun sinulla oli resurssirajoituksia, kielet suunniteltiin siten, että ne voitiin kääntää yhdellä kertaa (esim. Pascal). Toisa alta tyypillinen monivaiheinen kääntäjä koostuu useista päävaiheista. Ensimmäinen vaihe on skanneri (tunnetaan myös leksikaalisena analysaattorina). Skanneri lukee ohjelman ja muuntaa sen merkkijonoksi. Toinen vaihe on jäsentäjä. Se muuntaa merkkijonon jäsennyspuuksi (tai abstraktiksi syntaksipuuksi), joka kaappaa ohjelman syntaktisen rakenteen. Seuraava vaihe on se, joka tulkitsee syntaktisen rakenteen semantiikkaa. Koodin optimointivaiheet ja viimeinen koodin luontivaihe seuraavat tätä.
Mikä on kääntäjän vaihe?
Termi vaihe tulee usein esiin, kun puhutaan kääntäjien rakentamisesta. Alun perin kääntäjät olivat yksinkertaisia yksittäisiä monoliittisia ohjelmistoja, jotka yksi henkilö oli kirjoittanut yksinkertaisen kielen kääntämistä varten. Mutta kun käännettävän kielen lähdekoodista tulee monimutkainen ja suuri, kääntäjä jaettiin useisiin (suhteellisen itsenäisiin) vaiheisiin. Eri vaiheiden 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ävaiheiden (kuten lisäoptimointien) lisäämisen kääntäjälle. PQCC (Production Quality Compiler-Compiler Project) esitteli kokoelman jakamisen vaiheisiin Carnegie Melon Universityssä. He esittelivät termit etupää, keskipää ja takapää. Useimmissa kääntäjissä on vähintään kaksi vaihetta. Mutta yleensä takapää ja etupää kapseloivat nämä vaiheet.
Mitä eroa on vaiheen ja passin välillä kääntäjässä?
Phase ja Pass ovat kaksi kääntäjien alalla käytettyä termiä. Läpikulku on kerta, kun kääntäjä ohittaa (käyttää) lähdekoodin tai jonkin muun sen esityksen. Yleensä useimmissa kääntäjissä on vähintään kaksi vaihetta, joita kutsutaan etupääksi ja takapääksi, kun taas ne voivat olla joko yksivaiheisia tai monivaiheisia. Phasea käytetään kääntäjien luokitteluun rakenteen mukaan, kun taas passilla kääntäjät luokitellaan niiden toiminnan mukaan.