Razlika med Phase in Pass v prevajalniku

Razlika med Phase in Pass v prevajalniku
Razlika med Phase in Pass v prevajalniku

Video: Razlika med Phase in Pass v prevajalniku

Video: Razlika med Phase in Pass v prevajalniku
Video: Психология. Постижение Истины. Выпуск 1 2024, Julij
Anonim

Phase vs Pass v prevajalniku

Na splošno je prevajalnik računalniški program, ki prebere program, napisan v enem jeziku, ki se imenuje izvorni jezik, in ga prevede v drug jezik, ki se imenuje ciljni jezik. Tradicionalno je bil izvorni jezik jezik visoke ravni, kot je C++, ciljni jezik pa jezik nizke ravni, kot je zbirni jezik. Torej lahko prevajalnike na splošno obravnavamo kot prevajalce, ki prevajajo iz enega jezika v drugega. Pass in Phase sta izraza, ki se pogosto uporabljata pri prevajalnikih. Število prehodov prevajalnika je, kolikokrat preide izvor (ali neko obliko njegove predstavitve). Prevajalnik je zaradi lažje konstrukcije razdeljen na dele. Faza se pogosto uporablja za klic takega posameznega neodvisnega dela prevajalnika.

Kaj je prehod v prevajalniku?

Standardni način za razvrščanje prevajalnikov je po številu "prehodov". Običajno je prevajanje proces, ki zahteva razmeroma virov, in na začetku računalniki niso imeli dovolj pomnilnika za shranjevanje takšnega programa, ki bi opravil celotno delo. Zaradi te omejitve virov strojne opreme v zgodnjih računalnikih so bili prevajalniki razdeljeni na manjše podprograme, ki so opravili svoje delno delo tako, da so pregledali izvorno kodo (naredili »prestop« čez izvorno ali kakšno drugo njeno obliko) in opravili analizo, transformacije in prevajalske naloge ločeno. Torej so prevajalniki glede na to klasifikacijo opredeljeni kot enoprehodni ali večprehodni.

Kot že ime pove, prevajalniki z enim prehodom prevedejo v enem prehodu. Lažje je napisati enoprehodni prevajalnik, poleg tega pa delujejo hitreje kot večprehodni prevajalniki. Zato so bili jeziki tudi v času, ko ste imeli omejene vire, zasnovani tako, da jih je bilo mogoče prevesti v enem prehodu (npr. Pascal). Po drugi strani je tipičen večprehodni prevajalnik sestavljen iz več glavnih stopenj. Prva stopnja je skener (znan tudi kot leksikalni analizator). Scanner prebere program in ga pretvori v niz žetonov. Druga stopnja je razčlenjevalnik. Pretvori niz žetonov v drevo za razčlenjevanje (ali drevo abstraktne sintakse), ki zajame sintaktično strukturo programa. Naslednja stopnja je interpretacija semantike sintaktične strukture. Temu sledijo stopnje optimizacije kode in končna faza generiranja kode.

Kaj je faza v prevajalniku?

Izraz faza se pogosto pojavi, ko govorite o konstrukciji prevajalnika. Sprva so bili prevajalniki preprosti kosi enojne, monolitne programske opreme, ki jo je napisala ena oseba za prevajanje preprostega jezika. Ko pa postane izvorna koda jezika, ki ga je treba prevesti, zapletena in velika, je bil prevajalnik razdeljen na več (relativno neodvisnih) faz. Prednost različnih faz je, da je razvoj prevajalnika mogoče porazdeliti med skupino razvijalcev. Poleg tega izboljšuje modularnost in ponovno uporabo tako, da omogoča zamenjavo faz z izboljšanimi ali dodajanje dodatnih faz (kot so nadaljnje optimizacije) v prevajalnik. Postopek razdelitve kompilacije na faze je uvedel PQCC (Production Quality Compiler-Compiler Project) na univerzi Carnegie Melon. Uvedli so izraze front end, middle end in back end. Večina prevajalnikov ima vsaj dve fazi. Vendar običajno zadnji in sprednji del zajemata te faze.

Kakšna je razlika med Phase in Pass v prevajalniku?

Phase in Pass sta izraza, ki se uporabljata na področju prevajalnikov. Prehod je enkraten trenutek, ko prevajalnik preide (gre skozi) izvorno kodo ali kakšno drugo njeno predstavitev. Običajno ima večina prevajalnikov vsaj dve fazi, imenovani front end in back end, medtem ko sta lahko bodisi enoprehodni ali večprehodni. Phase se uporablja za razvrščanje prevajalnikov glede na konstrukcijo, medtem ko se pass uporablja za razvrščanje prevajalnikov glede na to, kako delujejo.

Priporočena: