KomputeranBernameyên

Broadcaster - e ... Types debren. Convert û bernameyên bi weşana

Programs, herweha kesên ku wergerandina ji zimanekî din bi hacetî tercuman an translator.

têgehên bingehîn

The program a temsîla zimanî yên bibana e: i → P → P (i). An wergêr bernameyek e, ku ji bo bernameya input P û hin input x peydakirî ye. Ev at P x performs: ez (P, x) = P (x). Rastî ev e ku tenê yek wergêr jêhatî yên stran û hemû bernameyên gengaz (ku dikare di sîstema fermî temsîl dike) heye Turing vedîtina pir kûr û girîng e.

The processor wergêrekî ji bernameyên bi zimanê machine e. Bi giştî pir biha binivîse interpreters bo languages-asta bilind de, da ku ew di nav form e ku hêsantir bi şiroveyên wergerîne.

Hin cureyên wergêr xwedî navên gelekî seyr e:

  • The Language wergerîne bernameyên zimanê civîna di nav zimanê machine.
  • Dendikên a zimanê-asta bilind de ji bo zimanê kêmtir wergerîne.

P → X → Q. e ku, ∀x: - Broadcaster a bernameya ku digire, wek welat input bernameya li hin zimanê S û berhem bernameya T bi vî awayî, ku ewan herdu eynî xwebêj e. P (x) = Q (x).

Heke weşana tevahiya bernameya nav tiştekî şîrovekirin, ku berhevkirineke berî Wedat darvekirin, an AOT kir. berhevkar AOT dikarin di series bikaranîn, ya dawîyê de yên ku gelek caran li Language, bo nimûne:

The source code berhevkar → (translator) → → civîn code Language (berhevkar) code → → machine CPU (wergêr).

çawayî tevgera an dînamîk pêk tê heger program weşandin, dema ku ji aliyê din part berê berhev darvekirin. Jit-hawgerdani bîr tiştên ku ewan ji xwe kiriye, da ku careke din û careke din dubare qoda çavkanî ne. Ew dikare heta Wedat Adaptive û recompilation li ser bingeha Helwesta yên li ser jîngehê darvekirin bernameya hilberîne.

Gelek ziman bên birêvebirin code at time compile û code nû raporekê li runtime.

qonaxa wergerê

Broadcast birîtî ye ji van gavên ji analîz û sentez:

The analyser qoda çavkanî → → → generator temsîla têgehî (synthesizer) → Koda Target.

Ev e, ji ber van sedeman:

  • Metodeke din e destdayî ne. werger Peyv bi tênê bi kêr nayê.
  • çareseriya engineering Good: eger tu dixwazî binivîse wergêran bo zimanên M û N source hedef hewce binivîse tenê bernameyên sade M + N (polukompilyatorov) bêtir tevlîhev M × N (total of wergêr).

Lê belê, di pratîkê de, a view têgehî yên pir kêm çêdibe bes karîger û têra xwe bi hêz ji bo tijîkirina her source û hedefa wihaye zimanan. Di dema ku hin nikarin bên cihê ku nêzî vê bûn.

hawgerdani rast bi riya gelek qonaxan re derbas bibe. Dema afirandina berhevkar xwe bi xwe ne hewce dubare hemû xebata dijwar ku gelê kiriye ji bo afirandina nûneratiyên û generators. Tu dikarî bi zimanê xwe rasterast li JavaScript an C wergerîne û sûd bigire heyî JavaScript-engine û berhevkar C ya ji bo yên din. Tu her wiha dikarî li ser temsîlkirina hiskirin ku heyî û bikaranîna makîneyên virtual.

translator record

çavkaniya, bi cihê û li baregeha: - Broadcaster a bernameya an jî hardware, ku tev bi sê zimanan e. Ew dikare di T-shape nivîskî, bicihkirina çepê original, mafê û hedefa baregeha li jêr.

in, sê cureyên debren hene:

  • Broadcaster - samokompilyator e, eger ew ji bo zimanê source bingehîn lihevkirî.
  • Berhevkar ku zimanê ku di hedefê de border, navê samorezidentnym e.
  • Broadcaster - a cross-berhevkar, eger ew hedef û zimanên bingehîn cuda.

Çima ev yek giring e?

Eger tu berhevkar rast, a zanîneke baş ji teknolojiya afirandinên xwe bikin, tu caran, ji ber ku têgeha bikaranîn, ji bo vê yekê bi awayekî berfireh tê bikaranîn, bo nimûne:

  • text formatkirin;
  • pirsên zimanê to databases;
  • mîmarî dibe pêşketî;
  • pirsgirêkên optimization giştî;
  • GUIs;
  • zimanan scripting;
  • kontrolkerên;
  • makîneyên virtual;
  • werger Machine.

Li gel vê, eger tu dixwazî binivîse preprocessors, linkers, loaders, debuggers û profilers, tu divê bi rêya gavên heman mîna dema nivîsandina berhevkar here.

Hûn jî dikarin hîn bibin çawa bi nivîsandina bernameyên baştir, ji ber ku çêkirina wergêr ji bo zimanê wateya têgihiştineke baştir ya entrîkayên û nezelaliyên. Li gorî lêkolîna ku ji rêgezên giştî ya weşana bi destûrê dide te ku bibe zimanê designer baş. Îcar ev madeyê, çawa zimanê eger ew ne dikarin bi bandor pêk werin di kaşê re?

teknolojî berfireh

teknolojiya berhevkar covers gelek deverên cuda yên zanistê dibe:

  • teoriya fermî yên zimanê: Rêziman, parsing, computability;
  • mîmarî dibe:. sets instruction, RISC an CISC, cycles saetê core processing pipelined, hwd;
  • têgehên yên zimanan bernameyên xwe, ji bo nimûne, stran a kontrol Bûyer, darvekirin bi şert, sazîya kûrahiya, decomposition fonksîyonel, modularity, senkronîzekirin, meta-bernameyên, di çarçoveya, berdewam sub-cure, Şablonên, MIME-encam, bigirin, annotations, herikîna, monads, adresa, berdewam , Desena, ramanê bi rêkûpêk, bîra Erk, mîras, polymorphism, settings mode, û bi vî awayî li ser hwd..;
  • zimanan razber û makîneyên virtual;
  • algorîtmayên û welat strukturên: têgînên bi rêkûpêk, ji algorîtmayan parsing, ji algorîtmayan graphics, bernameyên dînamîk, perwerdeya;
  • zimanan bernameyên: syntax, xwebêj (statîk û dînamîk), paradîgmayan piştgiriya (tevnî, OOP, karîger, maqûl, stack, paraleliya, meta-bernameyên);
  • software creation (hawgerdani, bi piranî mezin û girêcan): localization, caching, componentize, API-interfaces, ji nû ve bi karanîna, hevdemkirinê.

design berhevkar

Hinek ji wan tengasiyên ku di pêşketina translator rast:

  • Pirsgirêkên bi zimanê çavkanî. Hêsan e ku ew raporekê ew? Is a Unix heye? ji cureyên çawa ne? Is a pirtûkxaneyê de heye?
  • Dyalogê de derbas berhevkar: yek an pir-way?
  • Asta optimization xwestin. weşana bi lez û nepak bi optimization kêm an jî qet nikarin bibin normal. berhevkar Over-optimization hêdî wê, di heman demê de code baştir at runtime Dibe ku hêjayî wê.
  • Asta pêwîst ji detection error. Can a translator tenê li error yekem rawestandin? Gava ku divê dev ji? Pirsek ev e, ji bo baweriya bi correction error berhevkar?
  • Hebûna Amûrên. Eger zimanê resen e pir biçûk ne, li scanner û generator analyzers pêwîst in. bi jenerator, jenerator code in hene, lê ew jî ewqas belabûye ne.
  • Type of code hedef ji bo bi giştî be. Bê ji paqij code machine temam an jî nîgaşî hilbijartin. Yan jî bi tenê binivîsînin an para entry ku diafirîne a temsîla hiskirin ku populer ên wekî LLVM, RTL, an JVM. An jî make a wergerê yên orîjînal di source code ya li C an JavaScript.
  • Teşeya code hedef. Tu dikarî hilbijêrî ku zimanê civînê, a code machine portable, image bîra code machine.
  • Retargeting. Dema ku set of generators baş ew e ku rêjeyek pîyê hevpar. Ji bo vê yekê herî baş ew e ku xwedî yek generator ji bo input ji gelek beşan pêk tê.

Architecture berhevkar: pêkhatên

Ev pêkhatên serekî fonksîyonel yên berhevkar ku li code xwecihaxêv (heger program encam bernameyek li C an jî makîneyeke virtual e, pêwîst e tu gelek qonaxên ne) in:

  • Di bernameyê de input (marks flow) is nav scanner (analyser wushe), ku ew nav herika nîşanekan xwe diguherin û têr bike.
  • Fraksiyon (parser) avakirin, yek dara syntax razber.
  • analyser Semantîka decomposes agahiyên semantîk û kontroll hucûma darê ji bo çewtiyên. Di encama vê çalakiyê, ava graph semantic - dara syntax razber bi milkên din û girêdan avakirin.
  • generator code Intermediate, ava a graph herikîna (tuples bi nav blokên sereke kom).
  • serbixwe-Machine Optimizer code cerde hem optimization herêmî (di nav yekîneya bingehîn) û cîhanî (ji bo hemû blokên) di binyada xwe di nav temîz û mayî. Kêmkirin code fuzûlî û hêsan bibana. Di encama a graph herikîna de hate guherandin e.
  • Generator digihîne code target blokên bingehîn nav a code kontrola veguhestina di rectilinear, afirandina an file object Language qeydên nîgaşî (belkî bêbandor).
  • -Machine girêdayî Optimizer, Yanez bîra navbera qeydên de terxan û jî tîmên plan dike. Ev performs bernameya converter li zimanê civînê de li vê civînê de bi bikaranîna baş ji pipelining.

Li gel vê, bi bikaranîna manager Karên detection error û maseyên sembola.

analysis swahîlî (sęyemîn)

The scanner nav herika nîşanekan, şop whitespace, comments û macros berfireh diguherin û li characters source stream.

Scanners caran pirsgirêkên, wek an na, ne ji bo nav account doza, Çîrok, Îrak line û comments bicîbûyî de derketin.

Errors ku dibe ku di dema sęyemîn biqewime, navê néwanyanda û ev in:

  • qebûlkirin ji ber ku di alfabeya ne;
  • bêedebî ji hejmara characters di peyv an jî line;
  • berate ne girtî an jî string û teşbîhî;
  • dawiya file li Rayi.

Parsing (Sevenval)

The parser cihekê nîşanekan nav dara syntax razber xwe diguherin. Hev node li dar wek object bi warên bi navê, gelek ji yên ku hucûma dara xwe veşartin. Di vê astê de ne, ti dewrên hene. Gava ku tu hesabekî a parser bala xwe bidin ser asta tevliheviya rêziman (LL an LR) û bibînin, ka in tu cudakirinê qaîdeyên li wir, pêwîst e. Hinek zimanan hewce (semantic analysis).

Errors dîtin di vê qonaxê de bi navê syntax. Ji bo nimûne:

  • k = 5 * (7 - y;
  • = / 5 j;
  • = X * 4 56.

(semantic analysis)

Di dema (semantic analysis) ji bo kontrol permissibility ji qaîdeyên û beşên şirîkê dara parse (ji rê navên referansa xistina operasyona ji bo conversions type zimnî, û hwd. D.) Ji bo pêkanîna graph semantic.

Xuyaye, koma admissibility ji qaîdeyên di zimanên cuda cuda. Ger tu zimanan wek-Java de raporekê, hawgerdani dikarin bibînin:

  • daxuyaniya variable multiple di nav çarçoveya wê de;
  • a demoratîk firehtir bike berî daxuyaniya xwe;
  • referansên ji navê berçav;
  • Îhlalkirina mafên patent;
  • hejmar zêde an kêm Nîqaşên li ser banga rêbaza;
  • beş type.

nifşê

nifşê code Player berhem graph herikîna pêk tê ji tuples, kom nav blokên bingehîn.

nifşê code berhem a code machine rast. Di Herêm kevneşop ji bo RISC-makîneyên li ser qonaxa yekem de, tu Language bi hejmareke bêdawî qeydên virtual biafirîne. Ji bo CISC-makîne dibe ê rûnede.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ku.delachieve.com. Theme powered by WordPress.