SolosainaFandaharana

Fahitalavitra - dia ... Karazam-compilers. Niova fo sy ny fandaharana fandaharana

Fandaharana, ary koa ny olona mba handika amin'ny fiteny hafa iray Mila mpandika teny na ny mpandika teny.

hevitra fototra

Ny fandaharana dia fiteny fanehoana ny kajikajy: i → → P P (i). Ny mpandika teny dia fandaharana izay namatsy ny fahan'ny fandaharana P ary ny sasany X torohevitra. Tsy manao amin'ny P X: I (P, x) = P (x). Ny zava-misy fa tsy misy afa-tsy mpandika teny iray dia afaka manao izay rehetra azo atao fandaharan'asa (izay azo aseho ao amin'ny rafitra ara-dalàna) dia tena manan-danja lalina sy nahita Turing.

Ny processeur dia mahalaza ny heviny fandaharana amin'ny fiteny milina. Amin'ny ankapobeny lafo loatra mba hanoratra mpandika teny ho fiteny avo lenta, ka mandika an endrika izay moa no moramora kokoa mahalaza ny heviny.

Misy karazana mpandika teny no tena hafahafa anarana:

  • Ny fiangonana mandika teny assembler fandaharana ho fiteny milina.
  • Ny compiler mandika avo lenta teny amin'ny fiteny ambany.

Fahitalavitra - dia fandaharana izay maka tahaka ny antontan-kevitra torohevitra ny fandaharana amin'ny fiteny sasany T S ary mamokatra fandaharana amin'ny fomba fa samy manana mitovy semantics: P → → X Q. Izany hoe, ∀x. P (x) = Q (x).

Raha nandefa ny fandaharana manontolo ho zavatra interpretable, izany dia antsoina hoe ny fanangonana talohan'ny famonoana, na AOT fitambaran'ireo. AOT compiler azo ampiasaina amin'ny andian-dahatsoratra, ny farany izay matetika no assembler, ohatra:

Ny mari-tomboky compiler → (mpandika teny) → → fivoriambe fehezan-dalàna assembler (compiler) → → CPU milina fehezan-dalàna (mpandika teny).

Miasa na mavitrika-panangonana mitranga raha toa ny fandaharam-potoana dia nalefa, rehefa novonoina hafa voangona anjara teo aloha. JIT-compilers hahatsiaro ny zavatra efa nataony mba tsy hamerina ny Source Code hatrany hatrany. Afaka mamokatra mihitsy aza adaptive fanangonana sy ny recompilation miorina amin'ny fitondran-tena ny fandaharana famonoana tontolo iainana.

Fiteny maro mamela ny hampihatra ny didim fehezan-dalàna amin'ny fotoana sy manangona ny vaovao nanoratra fehezan amin'ny runtime.

fandikan-teny sehatra

Broadcast ahitana ny dingana ny fandinihana sy synthesizing:

Ny mari-tomboky Analyzer → → →-pisainana solontena gropy (synthesizer) → Target fehezan-dalàna.

Izany dia noho ireo antony ireo:

  • Izay mety ho fomba hafa dia tsy mety. Teny fandikan-teny tsotra tsy miasa.
  • Tsara injeniera vahaolana: raha te-hanoratra mpandika teny ho an'ny M sy N fiteny loharano nikendry ihany no tokony hanoratra M + N fandaharana tsotra (polukompilyatorov) fa tsy M × N sarotra (tanteraka ny mpandika teny).

Na izany aza, amin'ny fomba fanao, iray-pisainana jerena ny tena mahalana vao maneho fihetseham ampy sy matanjaka ampy handrakotra rehetra mety hipoitra loharano sy ny ampinga lehibe fiteny. Raha ny sasany dia afaka tonga akaiky izany.

Real compilers mandalo dingana maro. Rehefa mamorona anao manokana dia tsy mila compiler hamerina ny asa mafy rehetra izay olona nanao hamorona fanehoana sy ny gropy. Azonao atao ny mandika ny teny mivantana amin'ny JavaScript na C sy manararaotra ny efa misy JavaScript-maotera sy ny C compiler hanao ny ambiny. Azonao atao koa ny mampiasa ny efa misy kafa endrika sy virtoaly milina.

firaketana an-tsoratra mpandika teny

Fahitalavitra - dia fandaharana na ny fitaovana, izay tafiditra fiteny telo: ny loharano, ny toerana sy ny faladiany. Afaka ho voasoratra ao amin'ny T-endrika, nametraka tany am-boalohany ankavia, ny tsara sy ny ampinga lehibe eto ambany faladiany.

Misy karazany telo ny compilers:

  • Fahitalavitra - no samokompilyator raha mifanaraka amin'ny fototra teny loharano.
  • Compiler izay mikendry teny dia ny fototra, atao hoe samorezidentnym.
  • Fahitalavitra --compiler hazo fijaliana, raha nikendry sy fototra fiteny isan-karazany.

Nahoana no zava-dehibe?

Na dia tsy tena manao compiler, ny fahalalana tsara ny teknolojia ny ny zavaboary, satria ny foto-kevitra nampiasaina noho izany antony izany dia ampiasaina be mpampiasa, ohatra:

  • pandrafetana soratra;
  • fiteny fanontaniana ny angona;
  • mandroso solosaina trano;
  • Optimization ankapobeny ny olana;
  • GUIs;
  • scripting fiteny;
  • mpitandrina;
  • milina virtoaly;
  • Machine fandikan-teny.

Ankoatra izany, raha te-hanoratra preprocessors, linkers, loaders, debuggers sy profilers, tsy maintsy mandeha amin'ny alalan'ny dingana iray ihany tahaka ny nanoratra ny compiler.

Azonao atao koa ny mianatra ny fomba tsara kokoa manoratra fandaharana, satria ny fananganana ny mpandika teny ny teny dia midika hoe tsara kokoa ny fahatakarana sy ny ambiguities intricacies. Ny fianarana ny fitsipika ankapobeny ny fandefasana koa dia mamela anao ho lasa mpamorona tsara fiteny. Noho izany no zava-dehibe ny fomba hantsana ny fiteny raha tsy azo ampiharina mahomby?

feno teknolojia

compiler teknolojia maro samihafa manarona faritra solosaina siansa:

  • ara-kevitra ny fiteny: ny fitsipi-pitenenana, parsing, computability;
  • solosaina maritrano: fampianarana milentika, RISC na CISC, pipelined fikarakarana fototra famantaranandro tsingerina, sns.;
  • foto-kevitra ny fandaharana fiteny, ohatra, manao ny dingana fanaraha-maso, fepetra famonoana, iteration, recursion, Functional lo modularity, synchronization, meta-fandaharana, sehatra, tsy tapaka sub-karazany, iombonana, Output karazana, prototypes, annotations, mikoriana, monads, mailboxes, hanohy , Ekena ireo marika ankapobe, fanehoan-kevitra tsy tapaka, transactional fahatsiarovana, lova, polymorphism, fomba toe-javatra, sy ny sisa. sns.;
  • fiteny saro-takarina sy ny milina virtoaly;
  • algorithms sy angona rafitra: tsy tapaka teny, parsing algorithms, sary algorithms, mavitrika fandaharana, fiofanana;
  • fandaharana fiteny: Syntaxe, semantics (voasakantsakan'ny sy mavitrika), fanohanana paradigms (ara-drafitra, OOP, Functional, lojika, niisa, fitoviana, meta-fandaharana);
  • famoronana rindrankajy (compilers, lehibe sy matetika sarotra): Localisation, caching, componentize, API-interface, indray fampiasana, synchronization.

compiler famolavolana

Ny sasany amin'ireo olana nihaona tao amin'ny fampandrosoana ny tena mpandika teny:

  • Olana amin'ny teny loharano. Moa ve mora ny manangona azy io? Misy preprocessor? Inona no karazana? Misy trano famakiam-boky?
  • Grouping compiler hadilanana: tokana na maro-dalana?
  • Ny ambaratongam-Optimization tiana. Fast sy maloto fandaharana fandaharana amin'ny mora, na tsy misy afaka ny ho ara-dalàna Optimization. Over-Optimization compiler no ela, fa tsara kokoa amin'ny runtime fehezan Mety ho very maina izany.
  • Ny ambaratongam-diso maintsy ho tratra. Afaka ny mpandika teny fotsiny tamin'ny voalohany intsony fahadisoana? Raha tokony hijanona? Na ny matoky ny compiler fanitsiana fahadisoana?
  • Ny fisian'ny fitaovana. Raha teny tany am-boalohany dia tsy tena kely, ny scanner sy ny gropy analyzers no takiana. Misy ihany koa ny gropy, kaody gropy, nefa tsy toy izany mahazatra.
  • Karazana tanjona fehezan-dalàna ho niteraka. Madio ho voafantina avy nameno na kaody milina virtoaly. Na manoratra fotsiny ny teny anjara izay miteraka malaza kafa solontena toy ny LLVM, RTL, na JVM. Na manao fandikan-teny tany am-boalohany ao amin'ny mari-tomboky in C na JavaScript.
  • Ny rafitry ny fehezan-dalàna kendrena. Azonao atao ny misafidy ny fivoriambe teny, ny fehezan-dalàna milina azo nafindrafindra, milina fehezan-dalàna fitadidiana sary.
  • Retargeting. Rehefa ny andian-gropy Tsara ny manana anjara Inlet iraisana. Ary noho izany dia tsara indrindra ny manana gropy iray ho fahan'ny ny faritra maro.

compiler Architecture: singa

Ireo no lehibe Functional singa iray miteraka compiler izay tompon-tany fehezan (raha ny Output fandaharana dia fandaharana ao amin'ny C na milina virtoaly, dia mila maro dia tsy dingana):

  • Ny fahan'ny fandaharana (mikoriana marika) dia sakafo any an-scanner (lexical Analyzer), izay manova azy ho famantarana ny renirano.
  • Parser (parser) Syntaxe fanorenana iray saro-takarina hazo.
  • Zotran Analyzer decomposes ny zotran vaovao sy manamarina ny hazo nodes ny Diso. Vokatr'izany, nanao zotran kisary - Partie du discours hazo saro-takarina amin'ny fananana sy ny fanampiny niorina rohy.
  • Kafa fehezan-dalàna nandeha gropy manao kisary (tuples dia mivondrona ho lehibe biriky).
  • Machine-fehezan-dalàna tsy miankina eo an-toerana sady mitarika optimizer (ao anatin'ny base rafitra) sy maneran-(rehetra kilalao miendrika biriky) Optimization ankapobeny mitoetra ao anatin'ny tapaka. Mampihena teny kaody sy Manamora ny kajikajy. Ny vokatra azo dia farany hikoriana kisary.
  • Gropy mamehy fehezan-kendrena fototra biriky ho fanaraha-maso ny fifindran'ny rectilinear fehezan-dalàna, mamorona zavatra rakitra assembler firaketana virtoaly (mety mahomby).
  • Machine-miankina optimizer, linker allocates fahatsiarovana eo firaketana ary mahatonga manomana ekipa. Tsy manatanteraka ny fiovam-po ao am-piangonana fandaharana fiteny amin'izao fiangonana tsara fampiasana ny pipelining.

Ankoatra izany, ny fampiasana ny fahadisoana tratra subsystem mpitantana sy ny mariky latabatra.

Lexical fanadihadiana (scanning)

Ny manova ny renirano scanner loharano anjara ho famantarana ny renirano, fanesorana whitespace, fanehoan-kevitra sy ny fanitarana macros.

Skanera no misedra olana, toy ny raha na tsy tafiditra ao ny raharaha, sisiny, tsipika fiatoana sy nandinika lalina fanehoan-kevitra.

Fahadisoana izay mety hitranga mandritra ny scanning, antsoina hoe lexical ary ahitana:

  • tarehin-tsoratra izay tsy ao amin'ny abidy;
  • mihoatra noho ny isan'ny litera ao amin'ny teny na tsipika;
  • tsy mihidy tady famantarana na ara-bakiteny;
  • faran'ny antontan-taratasy ao amin'ny fanehoan-kevitra.

Parsing (parsing)

Ny parser manova ny filaharan'ireo famantarana ho any an-saro-takarina Partie du discours hazo. Node tsirairay eo amin'ny hazo dia ho toy ny zavatra voatahiry amin'ny saha anankiray atao hoe, maro izay ny tenany ny hazo nodes. Dia dingana tsy misy tsingerina. Rehefa mamorona parser Ilaina ny mihaino ny haavon'ny pitsiny ny fitsipi-pitenenana (LL na LR), izahao izay na misy aza ny lalàna tsy ampy. Fiteny sasany no mila zotran fanadihadiana.

Fahadisoana hita tao amin'izany dingana antsoina hoe Syntaxe. Ohatra:

  • K = 5 * (7 - Y;
  • J = / 5;
  • 56 = X * 4.

zotran fanadihadiana

Nandritra ny zotran fanadihadiana mba hanamarinana ny permissibility ny fitsipika sy ny mpiara-miasa ampahany amin'ny hazo hadihadiana (mamela Reference anarana nampidirinay karazana hetsika ho an'ny tanteraka po, sy ny sisa. D.) Fa namorona ny zotran kisary.

Mazava ho azy, ny hametraka ny admissibility ny fitsipika samy hafa fiteny amin'ny hafa. Raha nanoratra ny Java-tahaka ny fiteny, dia mety hahita compilers:

  • maro ao anatin'ny fanambarana miova ny votoatiny;
  • ny momba ny miova eo anoloan'ny ny fanambarana;
  • firesahana momba ny anaran 'ny undeclared;
  • fandikan-dalàna ny patanty zo;
  • be loatra na ny tsy fahampian'ny isan'ny fanehoan-kevitra amin'ny fomba antso;
  • karazana mismatch.

taranaka

Kafa taranaka fehezan-dalàna mahatonga mikoriana Tabilao ahitana tuples, mivondrona ho fototra biriky.

fehezan-dalàna taranaka mahatonga ny tena milina fehezan-dalàna. Amin'ny compilers nentim-paharazana ho an'ny RISC-milina amin'ny dingana voalohany, dia mamorona ny assembler miaraka amin'ny tsy manam-petra ny virtoaly isa firaketana. Fa CISC-milina mety tsy hitranga.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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