Kamepiula 'ē aʻe, Iaaiey
Broadcaster - He ... Kind o compilers. Hoohuli a me ka hōʻike nā polokalamu
Papa hana, e like me kanaka, e unuhi mai i kekahi 'ōlelo i kekahi hemahema e pono ai ke kanaka hoʻohālike a unuhi.
walaʻauʻana manaÿo
Ka polokalamu mea i ka'ōlelo e hoohalike ai o ka ho: i, → P → P (e). An hai mai ke ano o ka polokalamu i ua lako ai i ka papa hoʻokomo o P a me kekahi hoʻokomo o m. Ua hanaʻia ma P m: au (P, m) = P (x). I ka mea i loaʻa o kekahi wale unuhi mea hiki ke hoʻokō i hiki i nā papa hana (a hiki hoʻokū 'ia ma ka' olelo'ōnaehana) mea he loa kulou malie a me ka nui loaʻa Turing.
Ka unu lawelawe He kanaka hoʻohālike o nā papahana ma ka mīkini 'ōlelo. Ano nui, ua pipiʻi e kākau mea kuhikuhi nei, no ka kiʻekiʻe-pae 'ōlelo, no laila, e unuhi i loko o ka palapala i ka hiki pono i ke ano.
Kekahi mau 'ano o nā unuhi i loa na inoa:
- Ke assembler translates ekalesia 'ōlelo nā papahana i loko o mīkini' ōlelo.
- Ke compiler translates he kiʻekiʻe-ʻilikai'ōlelo i ka lalo'ōlelo.
Broadcaster - mea he polokalamu e lawe i hoʻokomo oʻikepili ka polokalamu i loko o kekahi 'ōlelo S a produces T polokalamu i loko o ia ke ala i ka mea a elua i ka ia semantics: P → X → Q. ia mea, ∀x. P (x) = Q (m).
Inā hōʻike ka polokalamu holoʻokoʻa i loko o kekahi mea interpretable, ka mea, ua kapaʻia he compilation mua aku, a AOT compilation. AOT compiler hiki ke hoʻohana 'ia ma ka puke, o ka hope o ka i mea pinepine ka assembler, no kekahi laʻana:
Ke kumu pā'ālua compiler → (unuhi) → →ʻaha kanaka kuhi assembler (compiler) → → CPU mīkini code (hai mai ke ano).
Hana ana a hōʻeuʻeu compilation ia lŘlŘ ina ka polokalamu ua hōʻike, i ka wa a hooko aku la i ka 'ē aʻe mua ohi hapa. JIT-compilers hoomanao mea ka mea, ua hana mua no laila, i ole e oe a hou, a hou i ke kumu kuhi. Ka mea, hiki i paka adaptive compilation a me ka recompilation ma muli o ka hana o ka? Ia? Aiiu hooko kaiapuni.
He nui nā 'ōlelo ae e hana karaima i i hoʻouluulu manawa, a i hoʻouluulu i ka hou kivila ma runtime.
unuhi ke kahua
Hōʻike maupaʻa nāʻanuʻu o ke kālailai a me ka synthesizing:
Ke kumu pā'ālua mea kālailai → → → mea manaʻo e hoohalike ai mīkini hana wāwahie (synthesizer) → pale umauma hoʻokahi kuhi.
Kēia mea ma muli o ia mau kumu:
- Kekahi 'ē aʻe iaoia mea i pono. Word unuhi wale 'aʻole i hana.
- Good 'enekinia, pāʻoihana: ina oe e makemake, e kākau unuhi no ka M a me N kumu' ōlelo hoʻomāka e pono kākau wale M + N ano papahana (polukompilyatorov) ma mua o M × N eiiieaena (huina o nā unuhi).
Eia naʻe, i loko o nä hana kilokilo, he mea manaʻo nānaina o ka he uuku ke kuka expressive lakou e maona ai a me ka mana kupono e uhi i na kumuhana kumu a me ka pale kaua 'ōlelo. Ia kekahi, ua hiki ke hele mai e kokoke ana i keia.
Real compilers kekahi, ma na mea he nui kahua o ka hoʻonaʻauao. Ka wā e pili ana i kou mau compiler, aole ia e pono i 'oe i ka paakiki hana i kanaka i hana ai, e hana e hoohalike ai ia me nā mīkini uila. Oe ke unuhi i kou 'ōlelo' ana i loko o pio ole C, a lawe lanakila o na pio-engine, a me ka C compiler, e hana i ke koena. E hiki no hoi ke hoʻohana i ke kanawai waena e hoohalike ai a me ka ʻike kamepiula machines.
moolelo unuhi
Broadcaster - mea he polokalamu a lako e, i ke komo ekolu 'ōlelo: ke kumu, i ka mākaʻikaʻi a me ke kumu. Ka mea hiki ke kākau i loko o ka T-kinona, ae kau i ka palapala hema, pono a me ka pale kaua kumu ma lalo iho nei.
He ekolu ano o compilers:
- Broadcaster - He samokompilyator ina mea hoʻopili like i ke kumu o kumu 'ōlelo.
- Compiler i pale umauma hoʻokahi 'ōlelo o ka kumukahua, i kapaia samorezidentnym.
- Broadcaster - he keʻa-compiler, ina oia hoʻomāka a me ka walaʻauʻana like 'ōlelo.
No ke aha lā i kēiaʻano nui?
ʻO ina oe aole loa e kekahi maoli compiler, he ike pono i ka 'ike loea hou o kona hanaia'na, no ka mea, ke manaʻo hoʻohana no keia mea i hoʻohana kaiāulu, no kekahi laʻana:
- formatting kikokikona;
- 'ōlelo'ōlelo āna i ka' ikepili i;
- holomua kamepiula kuhikuhipuʻuone;
- generalized kaʻoi loa pilikia;
- GUIs;
- kōmi 'ōlelo;
- luna;
- ʻike kamepiula machines;
- Machine unuhi.
Eia hou, ina e makemake e kākau preprocessors, linkers, nā kaʻa hāpai, debuggers a me profilers, e pono ke hele ma ke kapuwai hookahi me ka wā kākau he compiler.
Oe ke i aʻo pehea e kākau maikaʻi papa hana, mai ka hanaia'na mai o ka unuhi olelo no ka'ōlelo o ia hoʻi, he maikaʻi ka naʻauao o kona intricacies a me ambiguities. I ka like o ka mea mau loina o ka hoʻoleleʻana i leie aku oe e lilo i ka maikai akamai 'ōlelo. No laila, 'aʻole ia mea i ka poe puaa ma ka' ōlelo ina mea hiki ole ke hoʻokō ka pono?
hulina enehana
compiler enehana huna nuiʻokoʻa i nā wahi o ke kamepiula 'epekema:
- kūlana pähola 'o ka' ōlelo: grammar, parsing, computability;
- kamepiula kuhikuhipuʻuone:. aʻo e puhi ia, RISC a CISC, pipelined aaioee Kora naʻEsau uaki pōʻaiapuni, a pela aku;
- manaÿo o ka iaaiey 'ōlelo, no ka laʻana, ae hana i kekahi kaʻina, mana, conditional hooko, iteration, recursion, ooieoeiiaeuiiai decomposition, modularity, hoʻononiakahi, meta-iaaiey, laulā, ikaika iiaciiie-ke ano, UAAIIeIIeX, auaiaea type, prototypes, annotations, pele, monads, mailboxes, hoʻomau , wildcards, regular olelo, transactional hoomanao, e noho ai, polymorphism, 'ano' okoʻa no ka, a no laila, ma luna a pela aku..;
- Hōʻuluʻulu 'ōlelo a me kaʻike kamepiula machines;
- algorithms a me nā ikepili nā hale: regular, ka 'aoʻao, parsing algorithms, kiʻi algorithms, hōʻeuʻeu iaaiey, aʻo;
- iaaiey 'ōlelo: Ka Mooolelo O, semantics (kūpaʻa a me ka hōʻeuʻeu), kākoʻo paradigms (mall, oop, ooieoeiiaeuiiai, Logical, noae, parallelism, meta-iaaiey);
- hanaia'na lako polokalamu (compilers, IeAUPIIe, IAa IO nui a me ka luna '): IIeEeAIEUAA, Ahu, componentize, API-Interfaces, hou-hoʻohana, hoʻononiakahi.
compiler mea i manao ai
Kekahi o ka pilikia i loko o ka ulu ana o ka mea maoli unuhi i nā pilikia.
- Pilikia a me ke kumu 'ōlelo. Ua mea oluolu ia i hoʻouluulu ia? Ua loaʻa he preprocessor? Pehea i nāʻano? Ua loaʻa i ka hale waihona puke?
- Hoʻohui 'ia compiler ala: hookahi paha nunui-ala?
- Ke degere o kaʻoi loa makemake. Fast a me ka haumia hōʻike nā polokalamu me ka uuku paha ole kaʻoi loa hiki e maʻamau. Ma-kaʻoi loa compiler, e 'ūlōlohi, akā maikaʻi kuhi i runtime paha e aho la ia.
- Ke koi degere o ka hewa ka loaʻaʻana. E hiki anei i ka unuhi e hooki i ka hewa mua? I ka mea e hooki? Ina paha i ka hilinaʻi i ke compiler hewa e hooponopono?
- I ka loaʻa nui o ka mea paahana. Inā ka palapala 'ōlelo mea e uuku loa, e koi' ia ka mīkiniʻimi a me ka mīkini hana wāwahie analyzers. Aia nō hoʻi nā mīkini uila, kuhi nā mīkini uila, akā, ka mea e ole ai, he pono ole.
- ʻAno o ka pale umauma hoʻokahi kuhi e e ua loaʻa. E koho mai maemae kumukanawai aʻike kamepiula mīkini kuhi. A i 'ole e kākau i komo hapa e hana i ke kaulana waena e hoohalike ai ia me LLVM, RTL, a JVM. A i 'ole e ka unuhi ana i ka mea mua i loko o ke kumu kivila mai o C a pio.
- I ka waihona o ka pale kuhi. Oe ke koho i kaʻaha kanaka 'ōlelo, he lawe mīkini kuhi, mīkini kuhi iaiyoe kiʻi.
- Retargeting. I ka mea maikai i ka lākou o nā mīkini uila no i kekahi, he pono ole muliwai hapa. No keia kumu ka mea, he mea pono ia i kekahi mīkini hana wāwahie no ka manaʻo kōkua o na wahi he nui.
compiler kuhikuhipuʻuone: eiiiiiaiou
Mau mea i ka nui ooieoeiiaeuiiai eiiiiiaiou o ka compiler e paha ke kanaka maoli code (ina ka polokalamu auoiaea mea he polokalamu i loko o C a me kaʻike kamepiula mīkini, e pono ole ai i na kahua o ka hoʻonaʻauao):
- Ka polokalamu hoʻokomo o (pele hoailona) iiaeaaony i loko o ka mīkiniʻimi (lexical mea kālailai), i pio ia i loko o ke kahawai o ka hoailona.
- Waeʻikepili (waeʻikepili) kūkulu i kekahi Hōʻuluʻulu Ka Mooolelo O laau.
- Semantic mea kālailai decomposes ka semantic ike, a loaʻa, e kaha i ka laau aka wahi no ka wahaheʻe. E like me ka hopena, kūkulu semantic kaiapili - Hōʻuluʻulu Ka Mooolelo O laau me nā waiwai, a me nā loulou hookupaaiaʻi.
- Kuwaena kivila mīkini hana wāwahie kūkulu i ke kahe pakuhi (e Hoʻohui 'tuples i loko o ka papa kuhikuhiE ālai').
- Machine-kuokoa kivila optimizer e lawelawe ai nā kūloko (i loko o ka waihona ipu mokuna) a me ka honua (i nā ālai ') kaʻoi loa holo nōhie koe i loko o nā kūmau. Ho'ēmi i kā redundant kivila, a simplifies i ka ho. I ka hopena o ka Hoʻololi 'pele pakuhi.
- Mīkini hana wāwahie e hoopaa ana ka pale kaua kuhi walaʻauʻana ālai 'i loko o ka rectilinear EYI hooponopono kivila, e pili ana i ka mea waihona assemblerʻike kamepiula? Aaeno? (Hiki ineffective).
- Machine-e kaukaʻi optimizer, linker allocates hoomanao ma waena o? Aaeno? A i hoʻolala eiiaiaeu. Ua hanaʻia ka polokalamu huli ana ma kaʻaha kanaka 'ōlelo i kēiaʻaha kanaka i ka hoʻohana' maikai o ka pipelining.
Eia hou, i ka hoʻohana 'ana o ka hewa ka loaʻaʻana subsystem manakia a me ka hōʻailona papa.
Lexical Ka Ikepili (kaʻimiʻana)
Ka mīkiniʻimi pio ke kahawai kumu huapalapala i loko o ke kahawai o ka hoailona, hoonee whitespace, manaʻo a me ka hoʻonui macros.
Scanners pinepine halawai pilikia, e like me ina ole paha, e lawe i ka mooolelo o ka hihia, margins, laina, mai hemo mai, a i loko iho manaʻo.
Hewa i e hana ana i kaʻimiʻana, i kapaʻia lexical a me ka pololei:
- huapalapala i mea ole ma o ka'ōlelo Hawaiʻi;
- oi o ka helu o nā huapalapala ma ka olelo a me ka laina;
- ʻAʻole i paʻa ka hoailona a ke kaula literal;
- pau o ka waihona ma ka manaʻo hoʻopuka.
Parsing (parsing)
Ka waeʻikepili pio i ke kaʻina o nā hōʻailona puʻupaʻa i loko o ka Hōʻuluʻulu Ka Mooolelo O laau. Kēlā me kēia'āina i loko o ka laau ua waiho waho e like me ka mea me ka inoa o nā mahinaʻai, he nui no i ka poe ia lakou iho i ka laau aka wahi. Ma kēia kahua loaʻa nāʻaʻohe pōʻaiapuni. A hiki aku oe e hana i ka waeʻikepili mea pono e hoʻolohe i ke kiʻekiʻe o ka manaʻo pohihihi o ka grammar (LL a LR) a loaʻa mai ina loaʻa nō kekahi rula disambiguation. Kekahi mau 'ōlelo e koi semantic Ka Ikepili.
Hewa i loaʻa ma kēia kahua i kapaia Ka Mooolelo O. No kekahi laʻana:
- ke k = 5 * (7 - y me;
- hu = / 5;
- 56 = m * 4.
semantic Ka Ikepili
Iloko o ka semantic Ka Ikepili , e kaha i ka permissibility o nā rula a me ka ÷ ino māhele o ka wae laau (i hiki maopopo kahi inoa hoʻokomo 'ana no ka implicit type conversions, a no laila, ma luna o. D.) No ka ho okumu i ka mea semantic pakuhi.
ʻae nō hoʻi, i ka i ana o admissibility o ka rula i loko o kekahi 'ōleloʻokoʻa. Inā 'oe i hoʻouluulu i ka Iawa-e like' ōlelo, compilers i loaʻa:
- mau ee iaaanu aey hoike ana'ku i loko o kona laulā;
- i pili i ka ee iaaanu aey mua kona hoike ana'ku;
- i maopopo nä haumäna i ka inoa o ka undeclared;
- ʻaihue o iaoaioa pono;
- excessive a lawa ka helu o nā manaʻo hoʻopiʻi kū'ē ma kekahi papa hana i kapa aku ai;
- ʻAno OOAaAeAa.
hanauna
Kuwaena kivila hanauna produces pele pakuhi haku o tuples, Hoʻohui 'i loko o walaʻauʻana ālai'.
pā'ālua hanauna produces he maoli mīkini kuhi. Ma kuʻuna compilers no ka RISC-machines ma kaʻanuʻu mua, e ho okumu i ka assembler me ka mana loa helu o kaʻike kamepiula? Aaeno?. No ka CISC-machines paha e ole hiki mai.
Similar articles
Trending Now