KwamfutocinShirye-shirye

Watsa labarai - shi ne ... Iri compilers. Maida da kuma watsa shirye-shirye shirye-shirye

Shirye-shiryen, kazalika da mutane fassara daga wannan harshe zuwa wani bukatar tafinta ko fassara.

asali Concepts

A shirin ne a bangaren ilimin harsuna misali na lissafin: i → P → P (i). An fassara shi ne da wani shirin wacce ake kawota zuwa shigar da shirin P da kuma wasu da shigar da x. Yana yi a P x: I (P, x) = P (x). Gaskiyar cewa akwai daya kawai fassara da yake iya yin duk yiwu shirye-shirye (wanda za a iya wakilta a cikin m tsarin) ne mai matukar bayyanawa da kuma gagarumin samu Turing.

The processor ne tafinta na shirye-shirye a cikin na'ura harshe. Kullum tsada sosai rubuta tafsirai for high-matakin harsuna, sai suka fassara a cikin wani fom da cewa ya fi sauki ga fassara.

Wasu irin fassarar da sosai m sunayen:

  • Mai tãra fassara taro harshen shirye-shirye a cikin na'ura harshe.
  • A tarawa fassara a high-matakin harshe zuwa wani m harshe.

Watsa labarai - shi ne wani shirin da daukan matsayin da shigar da bayanan da shirin a wasu harshen S da kuma samar da T shirin a cikin irin wannan hanya da cewa su biyun suna da wannan ilimin harsuna: P → X → Q. Wancan ne, ∀x. P (x) = Q (x).

Idan watsa shirye-shirye da dukan shirin a cikin wani abu interpretable, shi ne ake kira a tari kafin kisa, ko AOT tari. AOT tarawa za a iya amfani da su a jerin, da karshen na wanda sau da yawa, Mai tãra, misali:

A tushen code tarawa → (fassara) → → taro code tãra (tarawa) → → CPU inji code (mai fassara).

Aiki ko tsauri tari na faruwa idan shirin da aka watsa shirye-shirye, a lokacin da hukuncin kisa ta hanyar wasu a baya harhada kashi. Jit-compilers tuna abin da suka rigaya ya yi haka kamar yadda ba su maimaita source code kuma da sake. Za su ma iya nuna Na'urar tari da kuma recompilation dogara ne a kan hali na shirin aiwatar da yanayi.

Mutane da yawa harsuna damar zartar da code a tara lokaci da kuma tara da sabon code a Runtime.

translation mataki

Watsa qunshi da matakai na nazarin da rairaya:

A tushen code analyzer → → → na ra'ayi misali janareta (synthesizer) → Target code.

Wannan shi ne saboda wadannan dalilai:

  • Wani hanya ne ba su dace. Kalma translation kawai ba ya aiki.
  • Good injiniya bayani: idan kana so ka rubuta fassara ga M, kuma N tushen harsuna niyya bukata rubuta kawai M + N sauki shirye-shirye (polukompilyatorov) maimakon M × N hadaddun (total na fassara).

Duk da haka, a yi, a na ra'ayi view of wani sosai ba safai ba ma'ana isa kuma iko isa ya rufe kowane tunanin tushen da kuma manufa harsuna. Duk da yake wasu sun iya zo kusa da wannan.

Real compilers ratsa yawa, saukarwa. A lokacin da samar naka tarawa ba ya bukatar ya maimaita duk da wuya aikin da cewa mutane sun yi don ƙirƙirar wakilci da kuma janareto. Za ka iya fassara da harshen kai tsaye a JavaScript ko C kuma yi amfani da data kasance JavaScript-engine da C tarawa yi da sauran. Zaka kuma iya amfani da data kasance tsaka-tsaki misali da rumfa da inji.

rikodin fassara

Watsa labarai - shi ne mai shirin ko hardware, wanda hannu da harsuna uku: Madogararsa, da manufa da kuma tushe. Su za a iya rubuta a wani T-siffar, ajiye asali hagu, dama da kuma manufa tushe a kasa.

Akwai iri uku compilers:

  • Watsa labarai - shi ne samokompilyator idan ta yayi dace da ainihin tushen harshe.
  • Tarawa da Target harshe ne baseline, kira samorezidentnym.
  • Watsa labarai - giciye-tarawa, idan ya yi niyya da kuma asali daban-daban harsuna.

Me ya sa wannan yake da muhimmanci?

Ko da ba ka taba yin wani real tarawa, mai kyau da ilmi na fasaha na ta halitta, domin manufar amfani da wannan manufa ana amfani yadu, misali:

  • Tsarin rubutu.
  • harshen queries zuwa databases.
  • m kwamfuta gine.
  • kowa yana da ingantawa da matsaloli;
  • GUIs.
  • scripting harsuna.
  • masu kula.
  • mai rumfa inji;
  • Machine translation.

Bugu da kari, idan kana so ka rubuta preprocessors, linkers, Radlader, debuggers da profilers, dole ne ka tafi, ta hanyar wannan matakai kamar lokacin rubuta tarawa.

Za ka kuma iya koyi yadda za a rubuta mafi shirye-shirye, tun halittar fassara ga harshen da nufin mafi fahimtar ta intricacies da shubuhohi. A binciken da na janar ka'idodinta watsa labarai kuma ba ka damar zama mai kyau zanen harshe. Saboda haka bai shi kome yadda m da harshen idan ba za a iya aiwatar da yadda ya kamata?

m fasahar

tarawa fasahar rufe da yawa daban-daban yankunan kwamfuta kimiyya:

  • m ka'idar harshe: nahawu, parsing, computability.
  • kwamfuta gine: umurci sets, RISC ko CISC, pipelined aiki core Agogon hawan keke, da dai sauransu.;
  • Concepts na shirye-shirye da harsuna, misali, yin wani jerin iko, matukar kisa, iteration, recursion, aikin bazuwar, modularity, aiki tare, meta-shirye-shirye, ikon yinsa, m sub-iri, shaci, fitarwa type, prototypes, Sidewiki, ya kwarara, monads, mailboxes, ci gaba da , wildcards, magana na yau da, transactional memory, gado, polymorphism, yanayin saituna, da sauransu. da sauransu.;
  • m harsuna da kuma rumfa inji;
  • lissafi mai tsauri da kuma bayanan Tsarin: na yau da kullum maganganu, parsing lissafi mai tsauri, graphics lissafi mai tsauri, tsauri shirye-shirye, da horo;
  • shirye-shirye da harsuna: ginin kalma, ilimin harsuna (a tsaye da kuma tsauri), support paradigms (tsarin, OOP, aikin, ma'ana, tari, parallelism, meta-shirye-shirye).
  • halittar software (compilers, yawanci manyan da hadaddun): sarrafawa, caching, componentize, API-musaya, sake-amfani, aiki tare.

tarawa zane

Wasu daga cikin matsalolin da ci karo da a ci gaba da real fassara:

  • Matsaloli tare da tushen harshe. Shin shi da sauki tara shi? Shin akwai wani preprocessor? Ta yaya ne iri? Shin akwai wani library?
  • Ra'ayoyi tarawa kafa: guda ko Multi-hanya?
  • A mataki na ingantawa da ake so. Azumi da kuma tsabta watsa shirye-shirye shirye-shirye tare da kadan, ko kuma ba ingantawa iya zama al'ada. Kan-ingantawa tarawa zai rage, amma mafi alhẽri code a Runtime iya zama shi daraja.
  • The bukata mataki na kuskure da ganewa. Iya a fassara kawai tsaya a farko kuskure? Lokacin da ya kamata a daina? Ko ka yarda da mai tarawa kuskure gyara?
  • A samuwan kayan aiki. Idan harshen asali ne ba kadan, da na'urar daukar hotan takardu da kuma janareta analyzers ake bukata. Akwai kuma janareto, code janareto, amma su ba haka suke ba kowa.
  • Irin manufa code da za a generated. Za a zaba daga m supplemented ko rumfa inji code. Ko kuma kawai rubuta wani shigarwa rabo cewa Halicci m matsakaici misali kamar LLVM, RTL, ko JVM. Ko yin fassarar na asali a cikin source code a C ko JavaScript.
  • The format da manufa code. Zaka iya zaɓar wani taro harshe, mai ɗaukuwa inji code, inji code memory image.
  • Retargeting. Lokacin da sa na janareto ne mai kyau to da na kowa mashiga rabo. Saboda wannan dalili shi ne mafi kyau a sami daya janareta ga shigar da sassa da dama.

tarawa Architecture: gyara

Wadannan ne manyan aikin gyara na wani tarawa cewa ya haifar da 'yan qasar code (idan fitarwa shirin ne a shirin, a C ko wani mai rumfa na'ura, za ka bukatar ba haka yawa, saukarwa):

  • A shigar da shirin (kwarara alamomi) an ciyar a cikin na'urar daukar hotan takardu (lexical analyzer), wanda sabobin tuba da shi a cikin wani rafi da Alamu.
  • Parser (parser) gina daya m ginin kalma itace.
  • Rara analyzer decomposes da na ginin jumla bayanai da kuma jami'in dake duba yawan itacen nodes ga kurakurai. A sakamakon haka, gina na ginin jumla jadawali - m ginin kalma itace da ƙarin dũkiyarsu da kuma kafa links.
  • Intermediate code janareta gina kwarara jadawali (tuples suna harhada cikin babban tubalan).
  • Machine-m code dab'i gudanar da duka biyu na gida (a cikin tushe da naúrar) da kuma duniya (duk tubalan) ingantawa m sauran cikin routines. Rage m code da simplifies da lissafin. A sakamakon haka ne modified kwarara jadawali.
  • Generator ta ɗaure manufa code na asali tubalan cikin wani rectilinear watsa iko code, samar da wani abu fayil tãra rumfa rajista (yiwu m).
  • Machine-dogara dab'i, linker allocates memory tsakanin rajista da kuma sa shirin teams. Shi aikin da hira shirin a taro harshen a wannan taro tare da mai kyau da yin amfani da pipelining.

Bugu da kari, da yin amfani da kuskure ganewa subsystem sarrafa da kuma alama ce Tables.

Lexical analysis (scanning)

The na'urar daukar hotan takardu sabobin tuba cikin rafi tushen haruffa a cikin wani rafi da Alamu, cire farin, comments da kuma fadada macros.

Scanners sau da yawa haɗu da matsaloli, kamar ko ko ba don la'akari da yanayin, ribace-ribace, line karya da kuma saka comments.

Kurakurai da cewa na iya faruwa a lokacin scanning, kira lexical kuma sun hada da:

  • haruffa da suke ba a cikin haruffa;
  • wuce haddi na da yawan haruffa a wata kalma ko line.
  • ba rufaffiyar alamar ko wani layi na zahiri.
  • karshen fayil a comment.

Parsing (parsing)

A parser sabobin tuba cikin jerin Alamu cikin wani m ginin kalma itace. Kowane kumburi a cikin itacen da aka adana a matsayin abu tare da mai suna filayen, da yawa daga abin da suke kansu itacen nodes. A wannan mataki babu hawan keke. Idan ka ƙirƙiri wani parser wajibi ne don kula da matakin haduwar nahawu (LL ko LR) da kuma gano ko akwai wani dokoki disambiguation. Wasu harsuna ba ya bukatar na ginin jumla analysis.

Kurakurai samu a wannan mataki ake kira cakude. Ga misali:

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

na ginin jumla analysis

A lokacin da na ginin jumla analysis duba da halaccin dokoki da kuma aboki sassa na parse itacen (kyale reference sunayen sa aiki don a fakaice irin Abubuwan Taɗi, da sauransu. D.) Ga kafa da na ginin jumla jadawali.

Babu shakka, da sa na admissibility dokoki cikin harsuna daban daban daban-daban. Idan ka tara da Java-kamar harsuna, compilers iya samun:

  • mahara m da'awarsu, a cikin iyãwarsa.
  • wani tunani zuwa wani m kafin ta da'awarsu.
  • nassoshi da sunan undeclared.
  • ƙeta na patent hakkokin;
  • wuce kima, ko kasa da lambar mahawara a wani Hanyar kira.
  • irin mismatch.

ƙarni

Intermediate code tsara samar da kwarara jadawali hada da tuples, harhada cikin na asali tubalan.

code tsara samar da wani real inji code. A gargajiya compilers ga RISC-inji a mataki na farko, za ka ƙirƙiri wani tãra tare da wani iyaka yawan rumfa rajista. Domin CISC-inji tabbas ba zai faru.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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