Izihlahla ze-syntax ezingaqondakali ezinhlelweni: umhlahlandlela ophelele

Isibuyekezo sokugcina: 7 Apreli 2026
  • Isihlahla se-syntax esingabonakali (AST) simelela isakhiwo esinengqondo sohlelo, sisusa imininingwane engafanele ye-syntactic.
  • Ama-AST akhiwe ngama-alfabhethi anemisebenzi ye-arity kanye nohlelo lolimi lwesihlahla oluchaza ukuthi yimaphi ama-node nezakhiwo ezivumelekile.
  • Amanothi nama-operators e-Dewey afana no-"." noma "/" avumela ukubhekisela okunembile ezihlahleni ezincane kanye nezindlela ngaphakathi kwalezi zakhiwo.
  • Abahlanganisi, abahumushi, namathuluzi okuhlaziya amakhodi athembele ku-AST ukuze athuthukise, aguqule, futhi aqonde izinhlelo ngendlela ethembekile.

izihlahla ze-syntax ezingabonakali kuhlelo

Izihlahla ze-syntax ezimfushane ekuhleleni zingenye yalezo zimiso ezizwakala zinengqondo kakhulu ekuqaleni, kodwa uma usuziqonda, uyaqaphela ukuthi zikhona yonke indawo: abahlanganisi, abahumushi , ukuhlaziywa kwekhodi, amathuluzi okulungisa kabusha, ngisho nasezilimini zemibuzo yedatha ehlelekile. Empeleni, ziyindlela umshini "oqonda ngayo" isakhiwo sohlelo ngale kombhalo ocacile.

Nakuba ngezinye izikhathi zidideka nezihlahla ze-parse zakudala, izihlahla ze-syntax ezingabonakali (ama-AST) zinemithetho yazo. Isihlahla se-syntax esingabonakali asiyona nje umdwebo omuhle: siyisakhiwo sedatha esihlanganisiwe nesiklanywe kahle esisusa konke okungadingekile ku-syntax eqondile (ama-parentheses, ama-comma, amagama angukhiye angafuneki, njll.) futhi sigxile ezintweni ezibalulekile: ukuthi yimiphi imisebenzi eyenziwayo, ukuthi yimaphi amanani, nokuthi ilandelana kanjani.

Uyini ngempela umuthi we-syntax ongabonakali (AST)?

Ku-theory yolimi lokuhlela, i-abstract syntax tree (AST) iyisakhiwo esifana nesihlahla esimelela i-syntax yohlelo, kodwa ngendlela elula uma iqhathaniswa ne-concrete parse tree. Iqukethe ulwazi olubalulekile olufanayo ne-parse tree, kodwa ihlelwe ngendlela emfushane futhi elawulekayo.

Isihlahla se-parse siqukethe yonke imikhiqizo yohlelo lolimi kanye nazo zonke izimpawu zokugcina, kufaka phakathi ama-parentheses, ama-comma, ama-semicolons, nezinye izakhi ze-syntactic kuphela. I-AST, ngakolunye uhlangothi, isusa le mininingwane enganikeli incazelo ye-semantic futhi igcina kuphela isakhiwo esinengqondo sezinkulumo nemisho.

Ngokuphathelene nokusetshenziswa, i-AST ivame ukwakhiwa ngezinto ze-node ezinohlobo olubonisa ukuthi luhlobo luni lokwakhiwa kwe-syntactic (okuqhubekayo, isihlonzi, uhlelo lokusebenza lomsebenzi, i-operator ye-binary, njll.), kanye nezakhiwo ezengeziwe ezichaza okuqukethwe kwayo: inani, igama, izingane, uhlu lwezingxabano, njalo njalo.

Ubuhle be-AST ukuthi yenza kube lula izigaba zakamuva zomhlanganisi noma umhumushi, njengokuhlola uhlobo, ukwenza ngcono noma ukukhiqizwa kwekhodi , ngoba inikeza umbono ohlanzekile wesakhiwo sohlelo ngaphandle komsindo we-syntactic.

isibonelo somuthi we-syntax ongabonakali ohlelweni

Umehluko phakathi kwesihlahla se-syntax sikakhonkolo kanye nesihlahla se-syntax esingaqondakali

Ukuze uqonde ngokugcwele ukuthi i-AST inikelani, kuyasiza ukuqala ngokuqhathanisa isihlahla se-concrete parse nesingabonakali. Cabanga ngohlelo lolimi olulula oluqaphela izinkulumo zezibalo ezifana nokuthi "a + 4 * 5" . Isihlahla se-concrete parse sibonisa ngokunembile ukusetshenziswa komthetho ngamunye wohlelo lolimi: izimpawu ezingezona ezesiphetho, ama-terminal, ama-parentheses, ama-opharetha, njll.

Lo muthi othize uvame ukujula futhi unama-node amaningi aphakathi asebenza kuphela ukugcina isakhiwo esisemthethweni sohlelo lolimi. Isibonelo, kungase kube nama-node e-"Expression," "Term," "Factor," bese kuba nezimpawu zokugcina ezifana ne -"+" , "*" , izihlonzi, nezinombolo. Ukukhiqizwa ngakunye kuba igatsha lomuthi, okwandisa ubunzima besakhiwo.

Isihlahla se-syntax esingabonakali saleyo nkulumo efanayo, ngakolunye uhlangothi, sinqunyelwe ekumeleleni imisebenzi yangempela kanye nama-operands . Ngakho-ke, esikhundleni samazinga amaningana e-"Expression" kanye ne-"Term", singaba ne-root node emele ukwengeza, enezingane ezimbili: ngakwesobunxele isihlonzi u-a kanti ngakwesokudla i-multiplication node enezingane eziyinani 4 no-5. Ama-node ohlelo lolimi kuphela ayanyamalala futhi izingxenye zesakhiwo ziyahlelwa kabusha noma zifinyezwe.

Lokhu kusho ukuthi i-AST kanye nesihlahla se-syntax esiqinile ziqukethe ulwazi olufanayo lwe-semantic , kodwa okokuqala kuveza ngendlela eqondile kakhulu futhi ehlangene. Lokhu kufinyela kuyisihluthulelo sokusebenza kahle ngekhodi ekuhlaziyeni noma ekusetshenzisweni kwamathuluzi.

Izihlahla nama-alfabhethi anomsebenzi we-arity

Ukuze kwenziwe lezi zihlahla zibe semthethweni ngokombono wezibalo, umqondo wezinhlamvu ezinomsebenzi we-arity uvame ukusetshenziswa . Esikhundleni sesethi nje yezimpawu, kuchazwa izinhlamvu lapho uphawu ngalunye luhlotshaniswa nenombolo ekhombisa ukuthi lungazala izingane ezingaki esihlahleni.

I-alfabhethi enomsebenzi we-arity, ngokungakahleleki, iyibhangqa eliqukethe isethi elinganiselwe yezimpawu kanye nomsebenzi onikeza uphawu ngalunye inombolo yemvelo (kufaka phakathi u-zero). Le nombolo ikhombisa i-arity yesimpawu: uma ingu-0, uphawu luziphatha njengeqabunga; uma ingu-1, luziphatha njenge-node engavamile; uma ingu-2, iyi-binary; njalo njalo. Kuvamile futhi ukuvumela izimpawu ze-arity eziguquguqukayo kubasebenzi njengohlu lwezimpikiswano.

Izimpawu ze-arity 0 zihambisana namaqabunga esihlahla (isibonelo, ama-constant noma ama-identifier). Izimpawu ze-arity 1 zisetshenziselwa ukwakha okuhilela ukubonakaliswa komntwana oyedwa. Izimpawu ze-arity 2 zimelela imisebenzi yakudala ye-binary njengokwengeza, ukuphindaphinda, ukwabiwa, njll. Futhi izimpawu ze-arity eziguquguqukayo zivumela ukwakha kwemodeli okwamukela inani elinganqunyelwe lezihlahla ezincane, njengocingo lomsebenzi olunemingcele eminingi.

Kusukela kulolu hlu lwezinhlamvu ezine-arity, isethi yazo zonke izihlahla ezingaba khona ingachazwa: kuqala ngomuthi ongenalutho (uma kucatshangelwa), ukwengeza zonke izimpawu ze-arity 0 kanye ne-variable, bese kwelulwa ngokungena esikhundleni: uma uphawu luyi-k-ary, lungabekwa njengenodi yomzali wezihlahla ezincane ze-k ezakhiwe kakade. Lokhu kuveza ulimi lomuthi (noma igama) elihlotshaniswa nohlu lwezinhlamvu.

Ulimi lomuthi kanye nomqondo we-node

Iqoqo lazo zonke izihlahla ezakhiwe ngohlamvu kanye nomsebenzi walo we-arity libizwa, kulo mongo, ulimi lomuthi noma amagama athi ulimi . Lilingana, kodwa ngezakhiwo zomuthi, nalokho okushiwo yi-Kleene closure yezintambo.

  Umhlahlandlela Wokuhlela Ophelele we-Agentica

Njengoba nje lapho sihlaziya izintambo sisebenzisa igama elithi amathokheni ukubhekisela ekuveleni kwezimpawu zezinhlamvu ngaphakathi kochungechunge, lapho sisebenza ngezihlahla sivame ukusebenzisa igama elithi ama-node . I-node, ngokuyisisekelo, iwukuvela okuthile kwesibonakaliso sezinhlamvu esine-arity esitholakala endaweni ethile esihlahleni.

Kusukela kulo mbono, lolu limi lomuthi lusho ukuthi ama-node yini isethi yezintambo ezisho ukuthini. Umuthi ngamunye uhunyushwa njengesakhiwo esakhiwe isinyathelo ngesinyathelo kusukela ku-alfabhethi, futhi ama-node ayizicucu ngazinye eziveza izimpawu zawo ngokomzimba.

Le ndlela yokuyibheka iwusizo kakhulu lapho kuklanywa ama-parser nama-AST generator , ngoba ivumela ukucabanga ngemithetho yokwakha yalezi zihlahla ngendlela efana nohlelo lolimi lwezinhlamvu, kodwa isebenza ngqo ezakhiweni ezilandelanayo.

Ubuningi bama-node ku-AST ethile: icala le-Egg

Ukusuka ku-theory kuya esibonelweni esisebenzayo, izinto eziningi zokufundisa zisebenzisa ulimi lwe-Egg ukubonisa ukwakhiwa kanye nokuphathwa kwe-ASTs. Kulesi simo, kusetshenziswa izinhlobo eziningana eziyinhloko zama-node, ngalinye line -arity echazwe kahle , okwenza kube lula kakhulu ukuwaphatha.

Ku-Egg AST ejwayelekile, ama-node e-VALUE abhekwa njengamaqabunga: amelela amagama angokoqobo njengezintambo noma izinombolo. Awanazo izingane; agcina inani kuphela. Ngokufanayo, ama-node e-WORD , asetshenziselwa izihlonzi (amagama aguquguqukayo, amagama omsebenzi, njll.), nawo aphathwa njengamaqabunga anesici esigcina igama.

I-node eyisihluthulelo ku-Egg yi- APPLY type , emele ukusetshenziswa komsebenzi noma umqhubi. Lolu hlobo lwe-node lunabantwana ababili abanomqondo: ingane ye -OPERATOR ekhomba ekusetshenzisweni kwenkulumo; kanye nengane ye-ARGS , empeleni eyi-node ekhethekile ye-ARRAY ebhekene nokugcina iqoqo lezihlahla ezincane, eyodwa yempikiswano ngayinye.

Ngakho-ke, ama-array ayindlela yemvelo yokwethula i-variable arity ku-AST: i-APPLY ihlala inezingxenye ezimbili (uhlu lwe-opharetha kanye nohlu lwezingxabano), kodwa lolo hlu lwangaphakathi lungaqukatha izihlahla ezingaphansi ezingu-zero, eyodwa, noma eziningi kuye ngokuthi ucingo oluthile lumelwe.

Ukwakheka okuningiliziwe kwama-node e-AST ku-Egg

Ezingeni lokuqaliswa, ama-AST node e-Egg avame ukumelwa njengezinto ezinezakhiwo , ezifanelana kahle nezilimi ezifana neJavaScript. Wonke ama-node abelana ngesakhiwo esifanayo: `type` , esikhomba uhlobo lwe-node (VALUE, WORD, APPLY, ARRAY, njll.) futhi, ngenxa yalokho, isakhiwo esizoba naso yonke into.

Ama-node e-VALUE asetshenziselwa ama-constant angokoqobo . Aqukethe isici, esivame ukubizwa ngokuthi i-value , lapho inombolo noma umucu abawumelelayo ugcinwa khona. Abanazo izingane ezengeziwe ngoba okuqukethwe kwabo kuchazwa ngokuphelele yilowo mbhalo ongokoqobo.

Ama-Word node agcinelwe izihlonzi : amagama aguquguqukayo, amagama omsebenzi, amagama epharamitha, nokunye okunjalo. Ngokuvamile anesici esithi `igama` esigcina isihlonzi njengentambo. Njengama-VALUE node, asebenza njengamaqabunga esihlahleni, njengoba inhloso yawo kuphela ukunikeza lelo gama.

Ama-Apply node amelela izinhlelo zokusebenza noma izingcingo. Ahlanganisa i- opharetha property , ekhomba ukuthi kusetshenziswe isisho (esinye i-node), kanye ne- args property , exhumanisa ne-ARRAY node. Lesi sakamuva yi-node ethile ngaphakathi kwe-AST, enhloso yayo ukubamba uhlu lwempikiswano yohlelo lokusebenza .

I-node ye-ARRAY ingaqondwa njengesitsha esakhiwe kwamanye ama-node, emele ukulandelana kwezihlahla ezincane. Ngokombono we-arity, yethula ukuguquguquka ngoba ivumela izingcingo ezingenazo izimpikiswano, ngempikiswano eyodwa, noma ngezimpikiswano eziningi ngaphakathi kwesitatimende esifanayo se-APPLY, ngaphandle kokushintsha incazelo yohlobo lwe-node eyinhloko.

Isibonelo se-AST: uhlelo lokusebenza olulula olunenani elilodwa

Ukuze sibone konke okungenhla, ake sicabange ngokumelwa kwemiyalelo elula, njengokusetshenziswa komsebenzi X onempikiswano eyodwa 5. I-AST ekhiqizwe yi-parser ihambelana negama elakhiwe ngama-VALUE, WORD kanye nama-APPLY nodes , kulandela imithetho ka-Egg.

Ezingeni lomqondo, besizoba ne- APPLY node empandeni. Impahla yayo yomqhubi ibizokhomba i-WORD node ebizwa ngokuthi u-X, kanti impahla yayo ye-args ibizobhekisela ku-ARRAY node equkethe isici esisodwa: i-VALUE node enenani lezinombolo 5. Ngale ndlela, isakhiwo sibonisa ngokucacile ukuthi ubani osetshenziswayo nokuthi yini esetshenziswayo.

Uma sifuna ukwenza zonke izimfanelo zicace, singabhala inothi enemininingwane eminingi ebonisa uhlobo, umqhubi, izimpikiswano, igama, kanye nenani. Lokhu kunothi okunezincazelo eziningi kuwusizo kakhulu ekulungiseni iphutha le-parser noma ekuqondeni ukuthi inkulumo yombhalo ihunyushwa kanjani ibe yinto yesihlahla ngaphakathi komhumushi.

Ekusetshenzisweni komhlaba wangempela, lesi sihlahla sivame ukuhlelwa njenge -JSON ukuze kube lula ukugcina, ukudlulisa, noma ukuhlola. Eqinisweni, amathuluzi namamojula, njengephakheji ye -evm2term ku-npm ecosystem, anikeza izethulo ezihlangene zala ma-AST ukuze kube lula ukuhlaziya noma ukuguqula.

Isibonelo se-AST: ukuhlanganisa nokuphindaphinda okuhlanganisiwe

Esinye isimo esivamile isisho esiyinkimbinkimbi kancane, njenge -"+(a, *(4, 5))" . Lapha sinomsebenzi wokwengeza impikiswano yawo yokuqala iyisihlonzi u-a kanti impikiswano yawo yesibili ingumphumela wokuphindaphinda u-4 ngo-5. I-AST ephuma kulesi sisho ibonisa leso sakhiwo esihlanganisiwe.

  I-RAT isatshalaliswe kusetshenziswa izinguqulo ezinonya ze-Axios ku-npm

Emsukeni wesihlahla, sizophinde sibe ne-APPLY node emele umsebenzi wokwengeza. Umsebenzisi wayo uzoba i-WORD node ebizwa ngokuthi "+", kuyilapho izimpikiswano zayo zizoba kwi-ARRAY node enezici ezimbili: eyokuqala, i-WORD ebizwa ngokuthi "a"; eyesibili, enye i-APPLY node emele ukuphindaphinda.

Leyo APPLY yesibili izoba ne-WORD njengomqhubi wayo ebizwa ngokuthi "*" kanye ne-ARRAY enezinombolo ezimbili ze-VALUE: eyodwa enenani elingu-4 kanti enye enenani elingu-5. Uma ibhekwa iyonke, isakhiwo sibonisa ngokusobala ukuthi i-oda lokuhlola liqukethe ukuphindaphinda okungu-4 ngo-5 bese wengeza umphumela ku-a.

Uma sandisa inothi ukuze ifake zonke izimfanelo, sizobona izinhlobo zawo wonke ama-node, amagama awo noma amanani athile, kanye nobudlelwano phakathi kwawo. Le ncazelo ecacile ihambisana nokusetshenziswa kwangempela kumhumushi we-Egg, lapho i-node ngayinye iyinto enezakhiwo ezishiwo ngenhla.

Uhlelo lolimi lwesihlahla kanye nohlelo lolimi lokuhlaziya

Indlela lawa ma-AST akhiqizwa ngayo ayiyona into engahleliwe: isekelwe kulokho okubizwa ngokuthi i- Tree Grammar . Ekwakhiweni okuvamile, uhlelo lolimi olunjalo luchazwa njenge-quadruple eyakhiwe nge-alfabhethi ene-arity, isethi elinganiselwe yezinguquko ze-syntactic (ezingezona i-terminal), isethi elinganiselwe yemithetho yokukhiqiza, kanye nophawu lokuqala.

Kumthetho ngamunye wokukhiqiza, i-variable ithathelwa indawo umuthi onempande yawo iwuphawu lwezinhlamvu zamagama ezine-arity, futhi izingane zawo ziyi-variables noma izihlahla ezichazwe kakade. Lesi sakhiwo sikhumbuza izinhlelo zolimi ezivamile noma ezingenawo umongo, kodwa ezivumelaniswe nokukhiqizwa okuqondile kwezihlahla esikhundleni sezintambo zezimpawu.

Okuhlobene naleyo ncazelo ehlelekile kakhulu uhlelo lolimi oluthile olusetshenziswa yi-Egg's parser ukukhiqiza izihlahla zalo. Lolu hlelo lolimi, oluvame ukwethulwa ngokungahlelekile kumadokhumenti, luchaza kahle ukuthi yiziphi izinhlanganisela zamagama angukhiye, ama-opharetha, ama-parentheses, nokunye okwamukelwayo olimini nokuthi zihumushela kanjani kuma-node ohlobo lwe-VALUE, WORD, APPLY, kanye ne-ARRAY.

Lolu hlelo lolimi lwesihlahla lungabonakala njengesibonelo esikhethekile salokho okwaziwa ezincwadini ngokuthi uhlelo lolimi lwesihlahla olujwayelekile . Umqondo uwukuba nemithetho echazwe kahle yokuguqula ukulandelana kwamathokheni okufaka kube yi-AST ehlelekile engahunyushwa noma ihlanganiswe.

I-Dewey notation: izixhumanisi ngaphakathi kwesihlahla

Uma sesinayo i-AST, sivame ukudinga ukubhekisela ezihlahleni ezithile : isibonelo, impikiswano yesibili yomsebenzi, i-opharetha yesisho, njll. Indlela enhle kakhulu yokwenza lokhu yilokho okubizwa ngokuthi i-Dewey Decimal notation, eboleka uhlelo olusetshenziswa ukufaka izinombolo ezigabeni kanye nezigatshana kumadokhumenti.

Kulo mbhalo, kusukela esihlahleni u-t, umuthi ongaphansi uboniswa uchungechunge lwezinombolo ezihlukaniswe ngama-period . Inombolo ngayinye ikhombisa indawo yomntwana (ngokuvamile iqala ku-1) futhi ukulandelana kwehla esihlahleni. Ngakho-ke, inkulumo efana no-t/2.1.3 ibhekisela enganeni yesithathu yomntwana wokuqala womntwana wesibili ka-t.

Incazelo ekhuthazayo yalolu phawu ilula: umucu ongenalutho ubhekisela esihlahleni sonke ngokwaso; uma umucu uqukethe inombolo elandelwa izinombolo ezengeziwe ezihlukaniswe yizikhathi, uhunyushwa ngokuthatha kuqala umucu omncane ohambisana nenkomba ekhonjisiwe bese usebenzisa i-logic efanayo ngokuphindaphindiwe kulo lonke umucu.

Isibonelo, uma sinesihlahla u-t esimele isisho esifana nokuthi "+(a, *(4,5))", esine-root node APPLY yokwengeza, ingane ethi WORD ebizwa ngokuthi "+", kanye nenye ingane ethi APPLY yokuphindaphinda, singakwazi ukubona izikhundla ezithile. Ngakho-ke, u-t/1 angaba yi-WORD node ene-opharetha ethi "+", u-t/2.1 isihlonzi "a", kanye no-t/2.2.2.1 i-VALUE node enenani elingu-4, uma sibala izingane ngendlela efanele.

Le ndlela yokunikeza "ama-coordinates" ngaphakathi kwe-AST iwusizo kakhulu ekuboniseni izindawo ezithile lapho ubika amaphutha, uzulazula esihlahleni , noma usebenzisa izinguquko zendawo kuma-node athile ngaphandle kokungacaci.

Izimpawu ezifanayo ezinhlelweni nakumathuluzi

Umqondo ongemuva kokubhalwa kukaDewey awugcini nje ngemfundiso yesihlahla; empeleni, uvela ngokuphindaphindiwe ezibhalweni eziningi ezisebenzayo esizisebenzisa nsuku zonke ekuhleleni nasekuphatheni idatha ehlelekile, noma ngabe asiqapheli ngaso sonke isikhathi.

Uma sibhala izinkulumo nge- dot operator ngolimi lokuhlela , njenge-object.property.subproperty, senza into efanayo kakhulu: sidlula esihlahleni sezinto ezifakwe esidlekeni, sikhetha ingane esinyathelweni ngasinye ngegama esikhundleni senombolo yesikhundla. Siqala ku-root node, sehlela kuma-node angaphakathi amaningi.

Iphethini efanayo ivela ezinhlelweni zamafayela ezifana ne-Unix, lapho i- forward slash operator (/) isetshenziswa ukuhlukanisa iziqondisi: /src/js/tutu.js ichaza indlela esuka empandeni yesistimu yamafayela iye kusisetshenziswa esithile, idlula amazinga alandelanayo esakhiwo sesihlahla.

Ezweni lamadokhumenti ahlelekile, izilimi ezifana ne -XPath zisebenzisa amanothi afanayo kakhulu ukukhetha ama-node ngaphakathi kwesihlahla se-XML. Umbuzo ofana no-"A//B/*" ukhetha ingane yokuqala (noma ngabe igama layo) yento ngayinye B eyinzalo yento A endaweni efanele maqondana nomongo wamanje, kusetshenziswa ukushelela okukodwa nokuphindwe kabili ukukhombisa amazinga okujula.

Elinye ithuluzi elaziwayo, ulimi lwe-jq , lisebenzisa uhlelo oluhambisanayo ukuze lizulazule ezakhiweni ze-JSON, okuvumela ukukhethwa kwezinto ezincane ngokusebenzisa izindlela ezihlanganisiwe, izihlungi, kanye nezinkulumo. Zonke lezi zimpawu zimane nje ziyizindlela ezahlukene zokuveza izindlela esihlahleni , ezihambisana kakhulu ne-Dewey Decimal notation kodwa ezivumelaniswe nezizinda zazo.

Hlaziya izihlahla kwezezilimi kanye nokuhlela

Ngale kwezwe labahlanganisi, izihlahla ze-syntax nazo zisetshenziswa kwezezilimi ukumela isakhiwo semisho. Lapho, zibizwa ngokuthi izihlahla ezisuselwa ku-derivation noma izihlahla ze-parse, ezibonisa indlela umusho ohlukaniswe ngayo ube yimisho, amagama, kanye nezigaba zohlelo lolimi.

  Ukuhlanganisa ezinhlelweni: Kuyini nokuthi kusebenza kanjani

Kulezi zihlahla, njengasekuhleleni, sithola izinhlobo ezintathu eziyisisekelo zama-node: i- root node , emele umusho ophelele noma isakhiwo somhlaba wonke; ama-node angaphakathi noma amagatsha, asebenza njengama-node angumzali kanye nama-group subsets omusho; kanye nama-leaf node, avame ukufana namagama athile avela ku-input string.

I-root node ihlukile: isakhiwo sonke somuthi silenga kuso. Ama-branched node atholakala ngaphansi kwempande noma amanye ama-node angumzali, futhi asebenza ukuhlela izingxenye zomusho noma uhlelo ngokwezigaba . Ama-node amaqabunga, ngakolunye uhlangothi, atholakala ezingeni eliphansi kakhulu lomuthi futhi awanazo izingane, ngaleyo ndlela avale isakhiwo sama-branched.

Lezi zihlahla zibhekwa njengamathuluzi okufundisa anamandla ngoba zisiza ekuhlukaniseni imisho eyinkimbinkimbi ibe yizinto ezilawulekayo. Okufanayo kusebenza nasekuhleleni: i-AST eyakhiwe kahle ikuvumela ukuthi ubone ngokushesha ukuthi yimiphi imisebenzi eboshwe ndawonye, ​​​​yimaphi amagama ahlanganisiwe, nokuthi ukuhlolwa kuhamba kanjani.

Kuye ngenhloso yokuhlaziya, singathola izinhlobo ezahlukene zezihlahla zokuhlaziya . Ezinye zigcizelela ukuncika phakathi kwamagama noma izingxenye (isibonelo, ukuthi ubani oncike kubani emshweni), kanti ezinye zigxila ekuhlanganisweni ngamabinzana noma izakhi, okuholela emindenini emibili eyinhloko.

Izihlahla ze-syntax ngokuthembela kanye nangokwesifunda

Olunye uhlobo olwaziwa kakhulu yi- dependent-based syntax tree . Kulolu hlobo, wonke amagama emshweni noma kuzo zonke izakhi ezifanele aphathwa njengama-leaf node, futhi izixhumanisi phakathi kwawo zibonisa ubudlelwano obuqondile bokuncika (isibonelo, isenzo esiyinhloko kanye nesihloko saso). Ngenxa yalokho, izihlahla ezinama-node ambalwa zivame ukukhiqizwa kunakwezinye izinhlelo.

Lokhu kulula kubenza kube lula kakhulu kwabaqalayo kanye nemisebenzi ethile yokucubungula ulimi, ngoba isakhiwo sigxila ekutheni ubani oncike kubani ngaphandle kokwethula ama-node amaningi aphakathi. Uma kusetshenziswa ekuhleleni izinhlelo, umqondo uwukunamathela kuphela ebuhlotsheni obubalulekile, kushiya imihlobiso yolimi.

Ngakolunye uhlangothi, sinezihlahla ze-syntax ezisekelwe ku-constituency noma izakhi, ezihlukanisa phakathi kwama-root node, ama-branching node angaphakathi, nama-leaf node, futhi zenze wonke amaqembu afanele abonakale. Lezi zihlahla zivame ukuqukethe ama-node amaningi futhi zibonisa isakhiwo sokulandelana komusho noma uhlelo ngokuningiliziwe.

Amathempulethi esihlahla esivamile abonakala abonisa imisho emide enamaqhubu amaningi amaqabunga, amazinga amaningana okuhluma, kanye neqhubu eliqondile elichazwe kahle. Awusizo kakhulu ekuhlukaniseni imisho eyinkimbinkimbi noma izinhlelo ezinezendlalelo eziningi zezakhiwo ezifakwe izidleke.

Kuzo zombili izihlahla ezixhomekekile kanye nezihlahla ze-constituent, izibonelo kanye nezinsiza ezibonakalayo ziyatholakala njengezifanekiso, okuvumela ukuthi ugcwalise ama-node ngolwazi olufunayo. Lokhu kusindisa isikhathi futhi kugwema ukuklama umdwebo kusukela ekuqaleni isikhathi ngasinye lapho ufuna ukuveza isakhiwo.

Izicelo ezisebenzayo namathuluzi ahlobene ne-AST

Ama-AST awawona nje umqondo wemfundiso: asetshenziswa ngenkuthalo kumathuluzi amaningi ansuku zonke yinoma ubani osebenza ngekhodi. Ama-compilers, abahumushi, ama-minifiers, ama-code formatters, kanye nabahlaziyi be-static cishe njalo bathembela ku-AST ukuze benze umsebenzi wabo.

Umhlanganisi ojwayelekile uthatha ikhodi yomthombo, ayinike amathokheni, ayihlaziye, futhi akhiqize umuthi we-syntax ongabonakali. Ukusuka lapho, wenza ukuhlolwa kwe-semantic (izinhlobo, ububanzi obuguquguqukayo, ukusetshenziswa okungalungile kwezakhiwo) futhi usebenzisa ukulungiswa kwekhodi ngokudlula nokuguqula i-AST ngaphambi kokukhiqiza ikhodi yomshini, noma i-bytecode.

Amathuluzi anjenge-linter noma ama-formatters nawo asebenza ku-AST: ahlaziya isakhiwo ukuze abone amaphethini ayinkinga, imikhuba emibi noma ukungahambisani futhi aphakamise izinguquko ezigcina isakhiwo se-semantic sesihlahla kodwa zilungise ukwethulwa kwekhodi.

Kuhlelo lwe-JavaScript, isibonelo, kunemitapo yolwazi eminingi eveza i-AST ngefomethi ye-JSON, okwenza kube lula ngamanye amathuluzi ukuthembela kuyo ukwenza ukuphinda kwenziwe kabusha, ukukhiqiza amadokhumenti azenzakalelayo, noma ukudala ukubonwa kwesakhiwo sezinhlelo eziyinkimbinkimbi.

Ngisho nasezindaweni ezithile ezikhethekile, njengokusetshenziswa kwezinsimbi zokulinganisa ukumbozwa kokuhlolwa noma ukuguqulwa kwekhodi yomthombo ibe ezinye izilimi, i-AST iyisisekelo lapho izixazululo eziningi zesimanje zisekelwe khona, njengoba ivumela ukusebenza ezingeni elikhululekile kakhulu lokucashunwa phakathi kombhalo ongavuthiwe kanye nekhodi yomshini.

Uma zihlanganiswa, izihlahla ze-syntax ezingabonakali ziyisici esiyinhloko esixhumanisa uhlelo lolimi olusemthethweni, ukumelwa kwalo kwangaphakathi ku-compiler noma umhumushi, kanye namathuluzi athuthukile esiwasebenzisayo ukubhala, ukuhlaziya, nokuguqula ikhodi ngokuphephile nangendlela ephumelelayo. Ukuqonda ukuthi zakhiwe kanjani, indlela yokuzisebenzisa (ngemiqondo efana ne-Dewey Decimal notation), kanye nokuthi yiziphi izinhlobo zama-node ahilelekile (VALUE, WORD, APPLY, fixed noma variable arity structures, njll.) kusisiza sibone ngokucacile ukuthi umshini wenzani ngempela lapho ucubungula uhlelo.

izakhiwo zedatha kanye nama-algorithms
I-athikili ehlobene:
Izakhiwo zedatha kanye nama-algorithms: umhlahlandlela ophelele wabahleli bezinhlelo