Faza proti prehodu v prevajalniku
Na splošno je prevajalnik računalniški program, ki bere 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 na visoki ravni, kot je C ++, ciljni jezik pa je bil jezik nizke ravni, kot je skupščina. Torej je na splošno prevajalnike mogoče obravnavati kot prevajalce, ki prevajajo iz enega jezika v drugega. Pass in Phase sta dva izraza, ki se pogosto uporabljata pri prevajalnikih. Število prehodov prevajalnika je tolikokrat, ko gre čez vir (ali kakšno obliko njegove predstavitve). Prevajalnik se razdeli na dele za udobje gradnje. Phase se pogosto uporablja za klic takšnega samostojnega dela prevajalnika.
Kaj je prepustnica v prevajalniku?
Standardni način za razvrščanje prevajalnikov je po številu prehodov. Običajno je sestavljanje relativno intenziven postopek in računalniki v začetku niso imeli dovolj pomnilnika, da bi lahko držali tak program, ki je opravil popolno delo. Zaradi te omejitve strojnih virov v zgodnjih računalnikih so bili prevajalniki razdeljeni na manjše podprograme, ki so svoje delo opravili tako, da so prešli izvirno kodo (naredili "prehod" nad virom ali kakšno drugo obliko) in opravili analizo , preobrazbe in naloge prevajanja ločeno. Torej, glede na to razvrstitev, so prevajalniki označeni kot prevajalniki z enim prehodom ali večpasovniki.
Kot pove že ime, prevajalniki z enim prehodom sestavljajo v enem prehodu. Lažje je napisati prevajalnik z enim prehodom in tudi ti delujejo hitreje kot prevajalniki z več prehodi. Zato so bili tudi v času, ko ste imeli omejitve virov, jeziki zasnovani tako, da jih je mogoče sestaviti v enem prehodu (npr. Pascal). Po drugi strani je tipičen prevajalnik z več prehodi sestavljen iz več glavnih faz. Prva stopnja je skener (znan tudi kot leksikalni analizator). Skener prebere program in ga pretvori v niz žetonov. Druga stopnja je razčlenjevalec. Niz žetonov pretvori v drevo razčlenjevanja (ali abstraktno sintaksično drevo), ki zajame skladenjsko strukturo programa. Naslednja stopnja je tista, ki razlaga semantiko skladenjske strukture. Temu sledijo faze optimizacije kode in končna faza generiranja kode.
Kaj je faza v prevajalniku?
Izraz faza se pogosto pojavi, ko govorite o konstrukciji prevajalnika. Na začetku so bili prevajalci vsak preprost delček enotne, monolitne programske opreme, ki jo je napisala ena oseba za sestavljanje preprostega jezika. Ko pa izvorna koda jezika, ki ga je treba prevesti, postane zapletena in obsežna, je prevajalnik razčlenjen na več (relativno neodvisnih) faz. Prednost različnih faz je, da je razvoj prevajalnika mogoče razdeliti med skupino razvijalcev. Poleg tega izboljša modularnost in ponovno uporabo, tako da omogoča nadomestitev faz z izboljšanimi ali dodatnimi fazami (kot so nadaljnje optimizacije), ki se dodajo prevajalniku. Postopek delitve kompilacije na faze je uvedel projekt PQCC (Projektni kakovostni kompilator-kompajler) na Univerzi Carnegie Melon. Predstavili so izraze sprednji, srednji in zadnji del. Večina prevajalnikov ima vsaj dve fazi. Ponavadi te faze zaklepajo zadnji in sprednji del.
Kakšna je razlika med fazo in prehodom v prevajalniku?
Phase in Pass sta dva izraza, ki se uporabljata na področju prevajalnikov. Prehod je enkrat, ko prevajalnik preide (preide) izvorno kodo ali kakšno drugo predstavitev. Običajno ima večina prevajalnikov vsaj dve fazi, ki se imenujeta sprednji in zadnji del, medtem ko sta lahko eno-prehodna ali večpasovna. Faza se uporablja za razvrščanje prevajalnikov glede na konstrukcijo, medtem ko se pass uporablja za razvrščanje prevajalnikov glede na njihovo delovanje.