ÒdinatèPwogram

Difuzeur - se ... Kalite konpilateur. Konvèti ak pwogram difizyon

Pwogram, osi byen ke moun ki li tradui soti nan yon lang nan yon lòt bezwen yon entèprèt oswa tradiktè.

konsèp debaz

Pwogram nan se yon reprezantasyon lengwistik nan kalkil: mwen → P → P (m). Yon entèprèt se yon pwogram ki se apwovizyone nan pwogram nan opinyon P ak kèk x opinyon. Li fè a P x: Mwen (P, x) = P (x). Lefèt ke gen yon sèl tradiktè se kapab nan fè tout pwogram posib (ki ka reprezante nan sistèm lan fòmèl) se yon Turing dekouvèt trè byen panse ak enpòtan.

processeur a se yon entèprèt nan pwogram nan lang machin. Anjeneral twò chè yo ekri entèprèt pou lang wo nivo, se konsa yo tradwi nan yon fòm ki se pi fasil ka esplike nou rèv.

Gen kèk kalite tradiktè gen non trè etranj:

  • Assembler a tradui pwogram lang asanble nan kreye machin.
  • du a tradui yon lang wo nivo nan yon lang pi ba yo.

Difuzeur - se yon pwogram ki pran kòm done D 'pwogram lan nan kèk lang S ak pwodui pwogram T nan yon fason yo ke yo tou de gen Semantics yo menm: P → X → K. Sa se, ∀x. P (x) = Q (x).

Si emisyon pwogram nan tout antye nan yon bagay entèrpretabl, yo rele sa yon konpilasyon anvan ekzekisyon, oswa AOT konpilasyon. ka AOT du dwe itilize nan seri, lèt la nan ki se souvan Assembler la, pou egzanp:

kòd sous du → (tradiktè a) → → asanble Kòd Assembler (du) Kòd → → CPU machin (entèprèt).

konpilasyon Operasyonèl oswa dinamik rive si se pwogram nan emisyon, lè egzekite pa lòt pati deja konpile. JIT-konpilateur sonje sa yo te deja fè se konsa yo pa repete kòd la sous ankò e ankò. Yo ka menm pwodwi adaptasyon konpilasyon ak rkonpile ki baze sou konpòtman an nan anviwònman an ekzekisyon pwogram nan.

Plizyè lang pèmèt yo egzekite kòd nan konpile tan ak konpile kòd la nouvo nan ègzekutabl.

tradiksyon etap

Emisyon konprann etap sa yo nan analize ak sentèz:

kòd sous analyser la → → → konseptyèl ekspresyon reprezantasyon dèlko (synthesizer) → Sib kòd.

Sa a se akòz rezon sa yo:

  • Nenpòt ki metòd lòt se pa apwopriye. tradiksyon Pawòl tou senpleman pa travay.
  • Bon solisyon jeni: si ou vle ekri tradiktè pou lang M ak N sous vize bezwen ekri sèlman M + N pwogram senp (polukompilyatorov) olye ke M × N konplèks (manm nan tradiktè).

Sepandan, nan pratik, yon View konseptyèl ekspresyon nan yon trè raman espresif ase ak pwisan ase yo kouvri chak sous ak sib rèzonabl lang. Pandan ke gen kèk yo te kapab vin fèmen nan sa a.

konpilateur Imobilye pase nan anpil etap. Lè y ap kreye pwòp ou a du pa bezwen repete tout travay la difisil ke gen moun ki te fè yo kreye reprezantasyon ak dèlko. Ou ka tradui lang ou dirèkteman nan JavaScript oswa C ak pran avantaj de ki deja egziste JavaScript-motè ak du a C rive nan fè rès la. Ou kapab tou itilize reprezantasyon an ki deja egziste entèmedyè ak machin vityèl.

tradiktè dosye

Difuzeur - se yon pwogram oswa pyès ki nan konpitè, ki enplike twa lang: sous la, destinasyon an ak baz la. Yo ka ekri nan yon fòm T-, mete orijinal bò gòch la, dwa ak sib baz anba a.

Gen twa kalite konpilateur:

  • Difuzeur - se samokompilyator si li koresponn ak lang nan sous de baz yo.
  • Du ki sib lang se debaz, ki rele samorezidentnym la.
  • Difuzeur - yon kwa-du, si li vize ak debaz lang divès kalite.

Poukisa sa a se enpòtan?

Menm si ou pa janm fè yon du reyèl, yon bon konesans nan teknoloji a nan kreyasyon li yo, paske yo konsèp nan itilize pou objektif sa a itilize lajman, pou egzanp:

  • fòma tèks;
  • lang queries plase nan baz done;
  • achitekti òdinatè avanse;
  • pwoblèm optimize jeneralize;
  • GUIs;
  • lang scripting;
  • contrôleur;
  • machin vityèl;
  • Machin tradiksyon.

Anplis de sa, si ou vle ekri preprocessors, linkers, charyo, debogeur ak profile, ou dwe ale nan etap sa yo menm jan ak lè li ap ekri yon du.

Ou kapab tou aprann kouman yo ekri pi bon pwogram, depi kreyasyon an nan tradiktè a pou lang lan vle di yon pi bon konpreyansyon yo genyen sou sibtilite li yo ak ekivok. Etid la nan prensip jeneral yo nan difize te tou pèmèt ou vin yon lang designer bon. Se konsa, li gen pwoblèm ki jan apik lang nan si li pa kapab aplike efektivman?

teknoloji complète

teknoloji du kouvri anpil zòn ki diferan nan syans òdinatè:

  • teyori fòmèl nan lang: gramè, analyzes, kalkulabilite;
  • achitekti òdinatè:. ansèyman ansanm, RISC oswa CISC, pipelined sik revèy pwosesis debaz, elatriye;
  • konsèp nan lang programmation, pou egzanp, fè yon kontwòl sekans, kondisyonèl ekzekisyon, iterasyon, rkursyon, fonksyonèl dekonpozisyon, modularite, senkronizasyon, meta-pwogram, sijè ki abòde, konstan sub-kalite, modèl, kalite pwodiksyon, prototip, anote, koule, monad, bwat mesaj, kontinye , djokèr, ekspresyon regilye, transactionnelle memwa, pòsyon tè, polimorfism, anviwònman mòd, ak sou sa elatriye..
  • lang abstrè ak machin vityèl;
  • algoritm ak done estrikti: ekspresyon regilye, analyse algoritm, grafik algoritm, pwogram dinamik, fòmasyon;
  • lang programmation: sentaks, Semantics (estatik ak dinamik), modèles sipò (estriktirèl, op, fonksyonèl, lojik, chemine, paralelis, meta-pwogram);
  • lojisyèl kreyasyon (konpilateur, anjeneral, gwo ak konplèks): lokalizasyon, caching, componentize, API-interfaces, re-itilize, senkronizasyon.

konsepsyon du

Gen kèk nan pwoblèm yo rankontre nan devlopman tradiktè nan reyèl:

  • Pwoblèm ak lang nan sous. Èske li fasil yo konpile li? Èske gen yon preproseseur? Ki jan yo se kalite yo? Èske gen yon bibliyotèk?
  • Gwoupman pase du: yon selibatè oubyen milti-fason?
  • Degre nan optimize vle. pwogram emisyon Vit ak move ak optimize ti kras oswa ki pa gen ka nòmal. Plis pase-optimize du pral ralanti, men pi bon Kòd nan ègzékusion pouvwa gen valè li.
  • degre yo egzije a deteksyon erè. Èske yon tradiktè jis kanpe nan erè a an premye? Lè li ta dwe sispann? Si gen konfyans nan koreksyon an erè du?
  • Disponiblite a nan zouti. Si lang orijinal la se pa piti anpil, scanner ak dèlko analizeur yo ap mande yo. Genyen tou dèlko, dèlko Kòd, men yo pa konsa pou sa komen.
  • Di ki kalite Kòd sib yo dwe pwodwi. Dwe chwazi soti nan pi bon kalite Kòd konplete oswa vityèl machin. Oswa jis ekri yon pòsyon antre ki ka kreye yon reprezantasyon popilè entèmedyè tankou LLVM, RTL, oswa JVM. Oswa fè yon tradiksyon nan orijinal la nan kòd la sous nan C oswa JavaScript.
  • Fòma a nan kòd la sib. Ou ka chwazi yon lang asanble, yon kòd pòtab machin, imaj machin Kòd memwa.
  • Retargeting. Lè seri a nan dèlko se yon bon bagay gen yon pòsyon komen Inlet. Pou rezon sa a li se pi bon gen yon sèl dèlko pou D 'a nan anpil pati.

du Achitèk: eleman

Sa yo se pi gwo eleman yo fonksyonèl nan yon du ki jenere Kòd natal (si pwogram nan pwodiksyon se yon pwogram nan C oswa yon machin vityèl, ou bezwen pa konsa pou sa anpil etap):

  • Pwogram nan opinyon (koule mak) manje nan scanner a (pale kounyè analyser), ki konvèti l 'nan yon kouran nan marqueur.
  • Analizeur (analizeur) konstwi yon abstrè pyebwa sentaks.
  • Semantik analyser dekonpoze enfòmasyon an semantik ak chèk nœuds yo pye bwa pou erè. Kòm yon rezilta, bati semantik graf - abstrè pyebwa sentaks ak pwopriyete adisyonèl ak lyen yo etabli.
  • Entèmedyè Kòd dèlko ap bati yon graf koule (tuples yo gwoupe nan blòk prensipal).
  • Pou Machin-endepandan Kòd optimizer ap fè tou de lokal (nan inite de baz la) ak mondyal (nan tout blòk) optimize fondamantalman rete nan woutin. Diminye redondants Kòd ak senplifye kalkil yo. Rezilta a se yon graf koule modifye.
  • Dèlko mare Kòd sib blòk debaz nan yon kòd rèktiliy kontwòl transmisyon maladi a, kreye yon dosye objè Asanble anrejistre vityèl (petèt efikas).
  • Pou Machin-depann optimizer, Linkshere repati memwa ant anrejistre epi fè ekip planifikasyon. Li fè pwogram nan konvèsyon nan lang asanble a asanble sa a ak yon sèvi ak bon nan pipeline.

Anplis de sa, itilize nan manadjè Subsystem deteksyon erè ak tab senbòl.

Pale kounyè analiz (optik)

Scanner nan konvèti karaktè yo sous kouran nan yon kouran nan marqueur, retire blan, kòmantè ak elaji makro.

Machin eskanè souvan rankontre pwoblèm, tankou si ou pa pran an kont ka a, marges, repo liy ak kòmantè entegre.

Erè ki ka rive pandan optik, ki rele pale kounyè epi yo genyen ladan:

  • karaktè ki pa nan alfabè a;
  • excès de ki kantite karaktè nan yon mo oubyen yon liy;
  • pa yon siy fèmen oswa yon afè literal;
  • nan fen dosye ki nan kòmantè.

Analyzes (analyzes)

analizeur a konvèti sekans nan marqueur nan yon pye bwa sentaks abstrè. Chak ne nan pye bwa a ki estoke kòm yon objè ak rele chan sa yo, anpil nan yo ki yo se tèt yo nœuds yo pyebwa. Nan faz sa a pa gen okenn sik. Lè w kreye yon analizeur nesesè yo peye atansyon sou nivo nan konpleksite nan gramè (LL oswa LR) ak chèche konnen si gen nenpòt règ menm non. Gen kèk lang mande pou analiz semantik.

Erè jwenn nan etap sa a yo rele sentaks. Pou egzanp:

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

semantik analiz

Pandan analiz la semantik tcheke legalite an nan règleman ak pati asosye nan pye bwa a analyzes (ki pèmèt non referans mete operasyon pou konvèsyon kalite enplisit, ak D. sou sa.) Pou fòme graf la semantik.

Li evidan, seri a nan admisiblite nan règ nan diferan lang diferan. Si ou konpile lang yo Java-tankou, konpilateur ka jwenn:

  • miltip deklarasyon plase nan sijè ki abòde li yo;
  • yon referans nan yon varyab anvan deklarasyon li yo;
  • referans sou non an nan sekrè a;
  • kontravansyon nan dwa patant;
  • Nimewo twòp oswa ensifizan nan agiman nan yon apèl metòd;
  • kalite dezekilib.

moun k'ap viv koulye

Entèmedyè moun k'ap viv koulye Kòd pwodui graf koule konpoze de tuples, gwoupe nan blòk de baz yo.

Kòd jenerasyon pwodui yon kòd machin reyèl. Nan konpilateur tradisyonèl pou RISC-machin yo sou premye etap la, ou kreye yon Asanble ak yon nonb infini nan anrejistre vityèl. Pou CISC-machin pwobableman pa pral rive.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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