Kontentke ótiw

Sintaksis (programmalastırıw tilleri)

Wikipedia, erkin enciklopediya
Sintaksisti bóleklew hám sheginis stili baǵdarlamashıǵa derek kodınıń elementlerin tanıwǵa járdemlesiw ushın jiyi paydalanıladı. Bul Python kodı reńli kodlanǵan bóleklewdi paydalanadı.

Informatikada kompyuter tiliniń sintaksisi − bul tildegi durıs strukturalasqan operatorlar yamasa sóz dizbekleri bolǵan simvollardıń kombinaciyasın anıqlaytuǵın qaǵıydalar bolıp tabıladı. Bul hújjet derek kodın kórsetetuǵın programmalastırıw tillerine de, hújjet maǵlıwmatlardı kórsetetuǵın belgilew tillerine de baylanıslı.

Tildiń sintaksisi onıń sırtqı formasın anıqlaydı.[1] Tekstke tiykarlanǵan kompyuter tilleri simvollar izbe-izligine, al vizual programmalastırıw tilleri  keńisliktegi jaylasıwǵa hám simvollar arasındaǵı baylanıslarǵa (tekstli yamasa grafikalıq bolıwı múmkin) tiykarlanǵan. Sintaksislik jaqtan jaramsız hújjetler sintaksislik qáte dep ataladı. Tildiń sintaksisin proektlestirgende dizayner usı mısallardan ulıwma qaǵıydalardı anıqlawdan aldın nızamlı hám nızamsız qatarlardıń mısalların jazıwdan baslawı múmkin.[2]

Sonlıqtan sintaksis kodtıń formasına silteme beredi hám semantikaǵa qarama-qarsı mánis. Kompyuter tillerdi qayta islewde semantikalıq redaktorlaw ádette sintaksislik qayta islewden keyin keledi; degen menen, ayırım jaǵdaylarda tolıq sintaksislik tallaw (analizlew) ushın semantikalıq qayta islew kerek hám olar birge yamasa bir waqıtta orınlanadı. Kompilyatorda sintaksislik analiz frontendti óz ishine aladı, al semantikalıq analiz backend tárepti (hám bul faza ózgeshelenetuǵın bolsa, orta sońı) óz ishine aladı.

Sintaksis dárejeleri[redaktorlaw | derekti redaktorlaw]

Kompyuter tiliniń sintaksisi tiykarınan úsh dárejege bólinedi:

  • Sózler − leksikalıq dáreje, belgiler qalay leksema payda bolıwın anıqlaydı;
  • Sóz dizbekleri − grammatikalıq dáreje, qısqasha aytqanda, leksemalardıń sóz dizbegin jasaw usılın anıqlaw;
  • Kontekst − qanday obyektlerge yamasa ózgeriwshiler atlarına baylanıslı ekenin anıqlaw, eger tipler tiyisli bolsa h.t.b

Solay etip ajıratıw modullikti payda etedi, hárbir dárejeni bólek hám jiyi jeke sáwlelendiriwge hám qayta islewge imkaniyat beredi.

Birinshiden, lekser simvollardıń sızıqlı dizbegin tokenlerdiń sızıqlı dizbegine aylandıradı; bul “leksikalıq tallaw” yamasa “leksing” retinde belgili.[3]

Turaqlı sóz dizbeklerinde jazılǵan leksikalıq specifikaciyadan leksikalıq quraldı hám BNF tilinde jazılǵan frazalıq grammatikadan tallawshını avtomat túrde jaratatuǵın qurallar jazılǵan: bul proceduralıq yamasa funkcional programmalastırıwdı talap etpesten, deklarativ programmalastırıwdı paydalanıwǵa imkaniyat beredi. Kórnekli mısal lex-yacc jubı. Olar avtomat túrde anıq sintaksis teregin jaratadı; tallawshı jazıwshı onıń abstrakt sintaksislik terekke qalay túrlenetuǵının sáwlelendiretuǵın kodtı qol menen jazıwı kerek. Kontekstli tallaw ádette qol menen ámelge asırıladı. Bul avtomat túrdegi qurallardıń bolıwına qaramastan, tallaw hár túrli sebepler menen jiyi qol menen orınlanadı − múmkin frazalıq struktura kontekstten bos emes yamasa alternativ ámelge asırıw ónimlilikti yamasa qáte tuwralı esabat beriwdi jaqsılaydı yamasa grammatikanı ańsat ózgertiwge imkaniyat beredi. Tallawshılar kóbinese Haskell sıyaqlı funkcional tillerde yamasa Python ya Perl sıyaqlı scenariy tillerinde yaki C yamasa C++ tilinde jazıladı.

Qátelerge mısallar[redaktorlaw | derekti redaktorlaw]

Mısal retinde, (add 1 1) hám 1 qosatuǵın sintaksislik jaramlı Lisp programması ('add' funkciyası bar bolsa, basqasha attı sheshiw sátsiz boladı). Degen menen, tómendegilerdi jazamız.

(_ 1 1)    lexical error: '_' is not valid
(add 1 1   parsing error: missing closing ')'

Lekser birinshi qáteni anıqlay almaydı − LEFT_PAREN tokenin shıǵarǵannan keyin ‘(‘ programmanıń qalǵan bólegi jaramsız ekenin biledi, óytkeni heshbir sóz qaǵıydası ‘_’ baslanbaydı. Ekinshi qáte tómendegishe anıqlanadı. tallaw basqıshı: tallawshı ‘(‘ token (jalǵız sáykeslik retinde) sebebinen “dizim” óndiriw qaǵıydasın anıqladı hám usılayınsha qáte tuwralı xabardı bere aladı; ulıwma ol túsiniksiz bolıwı múmkin.

Tip qáteleri hám járiyalanbaǵan ózgeriwshi qáteler geyde kompilyaciya waqtında anıqlanǵanda sintaksislik qáteler bolıp esaplanadı (bul ádette kúshli terilgen tillerdi kompilyaciyalawda boladı), biraq onıń ornına qátelerdiń bul túrlerin semantikalıq qáteler retinde klassifikaciyalaw jiyi ushırasadı.[4][5]

Sintaksis anıqlaması[redaktorlaw | derekti redaktorlaw]

Fayl:Python add5 parse.svg
Kiritilgen tokenizaciya menen Python kodınıń tallaw teregi

Tekstli programmalastırıw tilleriniń sintaksisi ádette sintaksislik kategoriyalardı (terminal emes) hám terminal belgilerdi induktiv túrde kórsetiw ushın turaqlı sóz dizbeklerdiń (leksikalıq struktura ushın) hám Backus-Naur formasınıń (grammatikalıq strukturaǵa arnalǵan metatil) sóz dizbegin paydalanıp anıqlanadı.[6] Sintaksislik kategoriyalar belgili bir sintaksislik kategoriyaǵa kiretuǵın mánislerdi kórsetetuǵın óndirisler dep atalatuǵın qaǵıydalar menen anıqlanadı.[1] Terminal simvolları − sintaksislik jaramlı programmalar dúzilgen anıq simvollar yamasa belgiler qatarları (mısalı, define , if , let yamasa void sıyaqlı gilt sózler).

Sintaksis kontekstsiz sintaksis hám kontekstke sezimtal sintaksis bolıp ekige bólinedi.[6] Kontekstsiz sintaksis - bul programmalastırıw tiliniń metatil menen baǵdarlanǵan qaǵıydalar bolıp tabıladı. Olar sintaksistiń sol bólegin qorshaǵan yamasa oǵan silteme beretuǵın kontekst penen sheklenbeydi, al kontekstke sezimtal sintaksis boladı.

Tilde ekvivalent turaqlı sóz dizbekleri (leksikalıq dárejede) yamasa bir tildi payda etetuǵın hár túrli fraza qaǵıydaları sıyaqlı hár túrli ekvivalent grammatika bolıwı múmkin. LR grammatikası sıyaqlı grammatikalardıń keńirek kategoriyasın paydalanıw LL grammatikası sıyaqlı sheklengen kategoriyalar menen salıstırǵanda qısqaraq yamasa ápiwayı grammatikalarǵa imkaniyat beredi, bul kóp qaǵıydaları bar uzaǵıraq grammatikanı talap etiwi múmkin. Hár túrli, biraq ekvivalent frazalar grammatikaları hár túrli tallaw tereklerin beredi, degen menen tiykarǵı til (jaramlı hújjetler jıynaǵı) birdey.

Sonday-aq qarań[redaktorlaw | derekti redaktorlaw]

Hár túrli programmalastırıw tilleriniń sintaksisin tez salıstırıw ushın “Sálem, álem!” programma mısallarında dizimin qarań.

  • Prolog sintaksisi hám semantikası
  • Perl sintaksisi
  • PHP sintaksisi hám semantikası
  • C sintaksisi
  • C++ sintaksisi
  • Java sintaksisi
  • JavaScript sintaksisi
  • Python sintaksisi hám semantikası
  • Lua sintaksisi
  • Haskell sintaksisi

Derekler[redaktorlaw | derekti redaktorlaw]

  1. 1,0 1,1 Friedman, Daniel P.; Mitchell Wand; Christopher T. Haynes. Essentials of Programming Languages, 1st, The MIT Press, 1992. ISBN 0-262-06145-7. 
  2. Smith, Dennis. Designing Maintainable Software. Springer Science & Business Media. 
  3. Pai, Vaikunta; Aithal, P.S. (December 31, 2020). "A Systematic Literature Review of Lexical Analyzer Implementation Techniques in Compiler Design". International Journal of Applied Engineering and Management Letters (IJAEML) 4 (2): 285–301. ISSN 2581-7000. https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3770588. 
  4. Aho, Alfred V.; Monica S. Lam; Ravi Sethi; Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools, 2nd, Addison Wesley, 2007. ISBN 0-321-48681-1. Section 4.1.3: Syntax Error Handling, pp.194–195.
  5. Louden, Kenneth C.. Compiler Construction: Principles and Practice. Brooks/Cole, 1997. ISBN 981-243-694-4.  Exercise 1.3, pp.27–28.
  6. 6,0 6,1 Sloneggger, Kenneth; Kurtz, Barry. Formal Syntax and Semantics of Programming Languages. 

Sırtqı siltemeler[redaktorlaw | derekti redaktorlaw]