Vaihe Ja Läpäisy Ero Kääntäjässä

Vaihe Ja Läpäisy Ero Kääntäjässä
Vaihe Ja Läpäisy Ero Kääntäjässä

Video: Vaihe Ja Läpäisy Ero Kääntäjässä

Video: Vaihe Ja Läpäisy Ero Kääntäjässä
Video: Kiina rap/feat google kääntäjä 2024, Marraskuu
Anonim

Vaihe vs läpäisy 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. Lähdekieli oli perinteisesti korkean tason kieli, kuten C ++, ja kohdekieli oli matalan tason kieli, kuten Assembly-kieli. Joten kääntäjiä voidaan yleisesti nähdä 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 läpikertojen lukumäärä tarkoittaa sitä, kuinka monta kertaa se käy lähteen (tai jonkinlaisen esityksen muodossa). Kääntäjä on jaoteltu osiin rakentamisen helpottamiseksi. Vaihetta käytetään usein kääntäjän sellaisen yksittäisen itsenäisen osan kutsumiseen.

Mikä on käännös kääntäjässä?

Tavallinen tapa luokitella kääntäjiä on "läpäisyjen" lukumäärä. Yleensä kokoaminen on suhteellisen resursseja kuluttava prosessi, ja alun perin tietokoneilla ei ollut tarpeeksi muistia sellaisen työn suorittamiseen, joka teki koko työn. Tästä johtuen laitteistoresurssien rajoituksesta varhaisissa tietokoneissa, kääntäjät jaettiin pienempiin alaohjelmiin, jotka tekivät osittaisen tehtävän käymällä läpi lähdekoodin ("siirtäneet" lähteen tai jonkin muun sen) ja suorittaneet analyysin, muunnokset ja käännöstehtävät erikseen. Joten, tästä luokituksesta riippuen, kääntäjät yksilöidään yhden tai monen läpimenon kääntäjinä.

Kuten nimestä voi päätellä, yhden kierroksen kääntäjät kääntyvät yhdellä kertaa. Yksivaiheinen kääntäjä on helpompi kirjoittaa, ja myös ne toimivat nopeammin kuin monipäästökääntäjät. Siksi, jopa silloin, kun sinulla oli resurssirajoituksia, kielet suunniteltiin siten, että ne voitaisiin koota yhdellä kertaa (esim. Pascal). Toisaalta tyypillinen monipäästöinen kääntäjä koostuu useista päävaiheista. Ensimmäinen vaihe on skanneri (tunnetaan myös nimellä leksikaalinen analysaattori). Skanneri lukee ohjelman ja muuntaa sen merkkijonoksi. Toinen vaihe on jäsennin. Se muuntaa merkkijonon jäsennyspuuksi (tai abstraktiksi syntaksipuuksi), joka sieppaa ohjelman syntaktisen rakenteen. Seuraava vaihe on se, joka tulkitsee syntaktisen rakenteen semantiikkaa. Koodin optimointivaiheet ja lopullinen koodin luontivaihe seuraavat tätä.

Mikä on kääntäjän vaihe?

Termi vaihe tulee usein esiin, kun puhut kääntäjän rakentamisesta. Alun perin kääntäjät olivat yksinkertaisia paloja yksittäisiä, monoliittisia ohjelmistoja, 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 itsenäisiin) vaiheisiin. Eri vaiheiden etuna on, että kääntäjän kehitys voidaan jakaa kehittäjien joukkueelle. Lisäksi se parantaa modulaarisuutta ja uudelleenkäyttöä sallimalla vaiheiden korvaamisen paremmilla tai lisävaiheiden (kuten lisäoptimointien) lisäämisen kääntäjään. Kokoomuksen jakamisen vaiheisiin esitteli Carnegie Melon Universityn PQCC (Production Quality Compiler-Compiler Project). He esittivät termit etupää, keskipää ja takapää. Useimmilla kääntäjillä on vähintään kaksi vaihetta. Mutta yleensä takapää ja etupää kapseloivat nämä vaiheet.

Mitä eroa on vaiheen ja läpäisyn välillä kääntäjässä?

Phase ja Pass ovat kaksi termiä, joita käytetään kääntäjien alueella. Pass on yksi kerta, jolloin kääntäjä kulkee (käy läpi) lähdekoodin tai jonkin muun esityksen siitä. Tyypillisesti useimmilla kääntäjillä on vähintään kaksi vaihetta, joita kutsutaan käyttöliittymäksi ja takapääksi, kun taas ne voivat olla joko yksi- tai monipäästöisiä. Vaihetta käytetään luokittelemaan kääntäjät rakenteen mukaan, kun taas passia käytetään luokittelemaan kääntäjät niiden toiminnan mukaan.

Suositeltava: