Faza vs Pass u sastavljaču
Općenito, prevoditelj je računalni program koji čita program napisan na jednom jeziku, koji se zove izvorni jezik, i prevodi ga u drugi jezik, koji se naziva ciljni jezik. Tradicionalno, izvorni jezik bio je jezik visoke razine poput C ++, a ciljni jezik bio je jezik niske razine poput skupštinskog jezika. Dakle, općenito prevoditelji se mogu vidjeti kao prevoditelji koji prevode s jednog jezika na drugi. Pass i Phase su dva izraza koja se često koriste kod prevoditelja. Broj prolaza prevoditelja je koliko puta prelazi izvor (ili neki oblik predstavljanja toga). Kompajler je podjeljen na dijelove radi praktičnosti konstrukcije. Faza se često koristi da bi se nazvao takav pojedinačni neovisni dio prevoditelja.
Što je propusnica u sastavljaču?
Standardni način klasificiranja prevoditelja je po broju "prolaza". Obično je sastavljanje relativno intenzivan proces i početno računala nisu imala dovoljno memorije za održavanje takvog programa koji je obavio kompletan posao. Zbog ovog ograničenja hardverskih resursa u ranijim računalima, prevoditelji su razbijeni na manje potprograme koji su svoj djelomični posao obavili tako što su prešli izvorni kod (napravili "prolazak" preko izvora ili nekog drugog njegovog oblika) i izvršili analizu , transformacije i zadaci prevođenja odvojeno. Dakle, ovisno o ovoj klasifikaciji, prevoditelji su označeni kao jednoprolazni ili višeprolazni prevoditelji.
Kao što ime sugerira, prevoditelji sa jednim prolazom sastavljaju se u jednom prolazu. Lakše je napisati jednoprolazni prevodilac, a oni također rade brže nego višeprolazni prevoditelji. Stoga su, čak i u vrijeme kad ste imali ograničenja resursa, jezici dizajnirani tako da se mogu sastaviti u jednom prolazu (npr. Pascal). S druge strane, tipični multi-pass prevoditelj sastoji se od nekoliko glavnih faza. Prva faza je skener (poznat i kao leksički analizator). Skener čita program i pretvara ga u niz tokena. Druga faza je parser. Pretvara niz tokena u stablo raščlanjivanja (ili apstraktno stablo sintakse), koje bilježi sintaktičku strukturu programa. Sljedeća faza je ona koja tumači semantiku sintaktičke strukture. Slijede faze optimizacije koda i završna faza generiranja koda.
Što je faza u sastavljaču?
Termin faza često dolazi kada govorite o konstrukciji prevoditelja. U početku su prevoditelji bili svaki jednostavni komadi pojedinačnog, monolitnog softvera koje je napisala jedna osoba za sastavljanje jednostavnog jezika. Ali kad izvorni kod jezika koji se prevodi postaje složen i velik, prevoditelj je raščlanjen na više (relativno neovisnih) faza. Prednost u različitim fazama je u tome što se razvoj prevoditelja može distribuirati među tim programera. Nadalje, poboljšava modularnost i ponovnu upotrebu omogućujući zamjena faza poboljšanim ili dodatnim fazama (poput daljnjih optimizacija) dodavanju prevoditelju. Proces dijeljenja kompilacije na faze uveo je PQCC (Projekt kvaliteta kompilera-kompajlera) na Sveučilištu Carnegie Melon. Uveli su pojmove prednji, srednji i stražnji kraj. Većina prevodilaca ima najmanje dvije faze. No, ove se faze obično spajaju sa stražnjim i prednjim.
Koja je razlika između faze i prolaza u sastavljaču?
Phase and Pass su dva izraza koja se koriste u području prevoditelja. Prolazak je pojedinačni put kada prevoditelj prelazi (prolazi) izvorni kod ili neko drugo predstavljanje istog. Obično većina prevodilaca ima najmanje dvije faze koje se nazivaju prednji i stražnji kraj, dok bi one mogle biti jednoprolazne ili višeprolazne. Faza se koristi za klasificiranje prevodilaca prema konstrukciji, dok se prolaz koristi za klasificiranje prevoditelja prema načinu na koji rade.