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ı.
Kompyuter tiliniń sintaksisi tiykarınan úsh dárejege bólinedi:
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ı.
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]
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.
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ń.