www.wikidata.uk-ua.nina.az
Sintaksis komp yuternoyi movi ce sukupnist pravil sho viznachayut kombinaciyi simvoliv yaki vvazhayutsya pravilno strukturovanim dokumentom abo fragmentom ciyeyi movi 1 Ce stosuyetsya yak mov programuvannya rezultatom yakogo ye pochatkovij kod tak i mov rozmitki rezultatom yakogo ye dani Pidsvichuvannya sintaksisu ta vidstupi chasto vikoristovuyutsya dlya dopomogi programistam u rozpiznavanni elementiv vihidnogo kodu Cej kod Python vikoristovuye kolorove vidilennya Sintaksis movi viznachaye yiyi formu 2 Tekstovi komp yuterni movi bazuyutsya na poslidovnostyah simvoliv a vizualni movi programuvannya na prostorovomu maketi ta zv yazkah mizh simvolami yaki mozhut buti tekstovimi chi grafichnimi Pro dokumenti yaki sintaksichno ne pravilni kazhut sho voni mayut sintaksichnu pomilku Pid chas rozrobki sintaksisu movi rozrobnik pochinaye pisati prikladi yak pravilnih tak i nepravilnih ryadkiv persh nizh sprobuvati z yasuvati zagalni pravila z cih prikladiv 3 Otzhe sintaksis vidnositsya do formi i vin protistavlyayetsya semantici znachennyam Pri vikoristanni komp yuternih mov semantichna obrobka zazvichaj vidbuvayetsya pislya sintaksichnoyi odnak v deyakih vipadkah dlya povnogo sintaksichnogo analizu neobhidna semantichna obrobka i voni vikonuyutsya abo razom abo odnochasno U kompilyatori sintaksichnij analiz vklyuchaye perednij plan todi yak semantichnij analiz vklyuchaye vihidnij i promizhnu fazu yaksho cyu fazu rozriznyayut Zmist 1 Rivni sintaksisu 1 1 Prikladi pomilok 2 Viznachennya sintaksisu 2 1 Priklad Lisp S virazi 2 2 Skladni gramatiki 3 Sintaksis proti semantiki 4 Div takozh 5 Primitki 6 PosilannyaRivni sintaksisu RedaguvatiSintaksis komp yuternoyi movi yak pravilo rozriznyayut na tri rivni Slova leksichnij riven sho viznachaye yak simvoli utvoryuyut leksemi Frazi riven gramatiki yakij viznachaye yak leksemi utvoryuyut frazi Kontekst viznachennya na sho posilayutsya imena ob yektiv abo zminnih yaksho tipi ye pridatnimi tosho Takij pidhid zabezpechuye modulnist yaka dozvolyaye opisuvati ta obroblyati kozhen riven okremo i chasto nezalezhno Po pershe lekser peretvoryuye linijnu poslidovnist simvoliv u linijnu poslidovnist leksem takozh vidomo yak leksichnij analiz Po druge analizator peretvoryuye linijnu poslidovnist leksem u iyerarhichne derevo sintaksisu vidomo yak sintaksichnij analiz Po tretye kontekstualnij analiz viznachaye imena ta pereviryaye tipi Cya modulnist inodi mozhliva ale u bilshosti mov svitu poperednij krok zalezhit vid piznishogo kroku napriklad hakerstvo lekseriv en u C vidbuvayetsya tomu sho tokenizaciya zalezhit vid kontekstu Navit u cih vipadkah sintaksichnij analiz chasto sprijmayetsya yak nablizhennya do idealnoyi modeli Stadiyi sintaksichnogo rozboru mozhna rozdiliti na dvi chastini derevo rozboru abo derevo konkretnogo sintaksisu yake viznachayetsya gramatikoyu ale yak pravilo zanadto detalne dlya praktichnogo vikoristannya i abstraktne sintaksichne derevo ASD sho sproshuye zadachu do zruchnoyi formi Etapi ASD ta kontekstualnogo analizu mozhna vvazhati formoyu semantichnogo analizu oskilki voni dodayut znachennya ta interpretaciyu sintaksisu abo ruchnu realizaciyu sintaksichnih pravil yaku bulo b vazhko abo nezruchno opisati chi realizuvati formalno Rivni zazvichaj vidpovidayut rivnyam v iyerarhiyi Chomski Slova nalezhat regulyarnij movi porodzhuvanij bezkontekstnoyu movoyu en KVM yak pravilo determinovanoyu bezkontekstnoyu movoyu en DKVM zaznachenoyu v gramatici strukturi en frazi yaka ye gramatikoyu tipu 2 podanoyu yak porodzhuvalni pravila en u formi Bekusa Naura FBN Gramatiki fraz chasto zadayutsya v nabagato bilsh obmezhenih gramatikah nizh povni kontekstno vilni gramatiki shob zrobiti yih bilsh legkimi dlya sintaksichnogo analizu v toj chas yak analizator LR en mozhe analizuvati bud yaku DKVM v linijnomu chasi prostij sintaksichnij analizator LALR en i she prostishij sintaksichnij analizator LL efektivnishi ale mozhut analizuvati tilki gramatiki porodzhuvalni pravila yakih ye obmezhenimi Zagalom kontekstna struktura mozhe buti opisana kontekstno zalezhnoyu gramatikoyu ta avtomatichno proanalizovana takimi zasobami yak gramatika atributiv en hocha yak pravilo cej krok vikonuyetsya vruchnu za dopomogoyu pravil rozv yazannya imen en ta perevirki tipu i realizuyetsya cherez tablicyu simvoliv yakij zberigaye nazvi ta tipi dlya kozhnoyi oblasti zastosuvannya Buli napisani instrumenti yaki avtomatichno generuyut lekser z leksichnoyi specifikaciyi napisanoyi v regulyarnih virazah i parser z gramatiki fraz napisanoyi v FBN ce dozvolyaye vikoristovuvati deklarativne programuvannya a ne procedurne chi funkcionalne Pomitnim prikladom ye para lex en Yacc Voni avtomatichno stvoryuyut konkretne sintaksichne derevo Pislya cogo avtor analizator povinen vruchnu napisati kod yakij opisuye yak ce peretvoryuyetsya na abstraktne sintaksichne derevo Kontekstnij analiz takozh zazvichaj vikonuyetsya vruchnu Nezvazhayuchi na isnuvannya cih avtomatichnih instrumentiv sintaksichnij analiz chasto realizovuyetsya vruchnu z riznih prichin mozhlivo struktura frazi ne ye kontekstnoyu abo alternativna realizaciya pokrashuye efektivnist chi povidomlennya pro pomilki abo dozvolyaye gramatiku zminyuvati legshe Parseri chasto pishutsya na funkcionalnih movah takih yak Haskell abo na movah skriptiv takih yak Python abo Perl abo na C abo C Prikladi pomilok Redaguvati Div takozh Sintaksichna pomilka Napriklad add 1 1 ye sintaksichno pravilnoyu programoyu Lisp za umovi sho funkciya add isnuye inakshe dozvil imen ne vikonuyetsya yaka dodaye 1 i 1 Odnak nastupni diyi ye nepripustimimi 1 1 lexical error is not valid add 1 1 parsing error missing closing Zvernit uvagu na te sho lekser ne mozhe identifikuvati pershu pomilku vse sho vin znaye ce te sho pislya stvorennya tokena LEFT PAREN pislya podalsha chastina programi nepridatna oskilki zgidno pravil zhodne slova ne pochinayetsya z Druga pomilka viyavlyayetsya na etapi sintaksichnogo analizu sintaksichnij analizator viznachiv porodzhuvalne pravilo list cherez token yak yedinij zbig i tomu mozhe vidati povidomlennya pro pomilku u zagalnomu vipadku vona mozhe buti neodnoznachnoyu en Pomilki tipu i neogolosheni pomilki zminnih inodi vvazhayutsya sintaksichnimi pomilkami koli voni viyavlyayutsya pid chas kompilyaciyi sho zazvichaj buvaye pri kompilyaciyi strogo tipizovanih mov hocha zazvichaj taki pomilki klasifikuyutsya yak semantichni 4 5 6 Yak priklad kod Python a 1 mistit pomilku tipu tak yak vona dodaye ryadkovij literal do cilochiselnogo literalu Tipi pomilok takogo rodu mozhut buti viyavleni pid chas kompilyaciyi voni mozhut buti znajdenimi pid chas analizu analizu frazi yaksho kompilyator vikoristovuye okremi pravila yaki dozvolyayut integerLiteral integerLiteral ale ne stringLiteral integerLiteral hocha bilsh imovirno sho kompilyator bude vikoristovuvati pravilo parsingu yake dozvolyaye vsi virazi vidu LiteralOrIdentifier LiteralOrIdentifier i todi pomilki budut viyavleni v hodi kontekstualnogo analizu pri perevirci tipu U deyakih vipadkah cya perevirka ne vikonuyetsya kompilyatorom i ci pomilki viyavlyayutsya lishe pid chas vikonannya U movah z dinamichnoyu tipizaciyeyu bagato pomilok tipu mozhna viyaviti lishe pid chas vikonannya Napriklad kod Python a b sintaksichno korektnij na rivni fraz ale korektnist tipiv a i b mozhe buti viznachena tilki pid chas vikonannya oskilki zminni ne mayut tipiv u Python a lishe znachennya Yaksho isnuyut rozbizhnosti shodo togo chi povinna pomilka tipu viyavlena kompilyatorom nazivatisya sintaksichnoyu pomilkoyu a ne statichnoyu semantichnoyu pomilkoyu pomilki tipu yaki mozhna viyaviti lishe pid chas vikonannya programi zavzhdi rozglyadayutsya yak semantichni a ne sintaksichni pomilki Viznachennya sintaksisu RedaguvatiFajl Python add5 parse svgRozbir dereva kodu Python z tokenizaciyeyu vstavkiSintaksis tekstovih mov programuvannya zazvichaj viznachayetsya z dopomogoyu kombinaciyi regulyarnih viraziv dlya leksichnoyi strukturi ta notaciyi Bekusa Naura dlya gramatichnoyi strukturi dlya induktivnogo viznachennya sintaksichnih kategorij ta simvoliv terminalu Sintaksichni kategoriyi viznachayutsya pravilami voni nazivayutsya porodzhuvalnimi en ta viznachayut do yakoyi sintaksichnoyi kategoriyi nalezhat znachennya 2 Terminalni simvoli ce konkretni simvoli abo ryadki simvoliv napriklad klyuchovi slova taki yak define if let abo void z yakih buduyutsya sintaksichno korektni programi Mova mozhe mati rizni ekvivalentni gramatiki taki yak ekvivalentni regulyarni virazi na leksichnomu rivni abo rizni pravila fraz yaki generuyut odnu j tu samu movu Vikoristannya bilsh shirokoyi kategoriyi gramatik takoyi yak gramatika LR mozhe dozvoliti bilsh korotki abo bilsh prosti gramatiki u porivnyanni z obmezhenimi kategoriyami takimi yak gramatika LL yaka mozhe zazhadati bilsh dovgih gramatik z velikoyu kilkistyu pravil Rizni ale ekvivalentni gramatiki fraz dayut rizni dereva sintaksichnogo analizu hocha bazova mova nabir dopustimih dokumentiv odna i ta sama Priklad Lisp S virazi Redaguvati Nizhche navedena prosta gramatika viznachena z vikoristannyam notaciyi regulyarnih viraziv i rozshirenoyi notaciyi Bekusa Naura Priklad opisuye sintaksis S viraziv ta danih dlya movi programuvannya Lisp yakij viznachaye porodzhuvalne pravilo en dlya sintaksichnih kategorij expression atom number symbol ta list expression atom list atom number symbol number 0 9 symbol A Z A Z 0 9 list expression Cya gramatika viznachaye nastupne viraz ce atom abo spisok atom ce chislo abo simvol chislo ce neperervna poslidovnist odniyeyi abo dekilkoh desyatkovih cifr yakim neobov yazkovo pereduye znak plyus abo minus simvol ce litera za yakoyu jdut nul abo bilshe bud yakih simvoliv za vinyatkom probiliv spisok ce uzgodzhena para duzhok vseredini yakoyi nul abo bilshe viraziv Tut desyatkovi cifri simvoli verhnogo i nizhnogo registru a takozh krugli duzhki ye terminalnimi simvolami Nizhche navedeni prikladi pravilno pobudovanih poslidovnostej leksem v cij gramatici 12345 A B C232 1 Skladni gramatiki Redaguvati Gramatiku neobhidnu dlya viznachennya movi programuvannya mozhna klasifikuvati za yiyi polozhennyam v iyerarhiyi Chomski Gramatika fraz bilshosti mov programuvannya mozhe buti viznachena za dopomogoyu gramatiki tipu 2 tobto voni ye kontekstno vilnimi gramatikami 7 hocha zagalnij sintaksis ye kontekstno zalezhnim cherez ogoloshennya zminnih i vkladeni oblasti otzhe tipom 1 Odnak ye vinyatki i dlya deyakih mov gramatika fraz maye tip 0 Turing complete V deyakih movah takih yak Perl i Lisp specifikaciya chi realizaciya movi dozvolyaye stvoryuvati konstrukciyi yaki vikonuyutsya na etapi sintaksichnogo analizu Krim togo ci movi mayut konstrukciyi yaki dozvolyayut programistu zminyuvati povedinku analizatora Cya kombinaciya efektivno rozmivaye vidminnist mizh sintaksichnim rozborom ta vikonannyam a takozh robit analiz sintaksisu nerozv yaznoyu problemoyu v cih movah sho oznachaye sho faza sintaksichnogo analizu mozhe ne zavershitisya Napriklad v Perl mozhna vikonati kod pid chas sintaksichnogo analizu z vikoristannyam operatora BEGIN a prototipi funkcij Perl mozhut zminiti sintaksichnu interpretaciyu i mozhlivo navit sintaksichnu validnist kodu 8 U rozmovnij movi ce nazivayetsya tilki Perl mozhe analizuvati Perl tomu sho kod povinen vikonuvatisya pid chas sintaksichnogo analizu i mozhe zminyuvati gramatiku abo bilsh silno navit Perl ne mozhe analizuvati Perl bo ce nerozv yazne Analogichno makrosi Lisp vvedeni sintaksisom defmacro takozh vikonuyutsya pid chas sintaksichnogo analizu a ce oznachaye sho kompilyator Lisp povinen mati vsyu sistemu chasu vikonannya Lisp Na vidminu vid cogo makrosi C ye prosto zaminoyu ryadkiv i ne vimagayut vikonannya kodu 9 10 Sintaksis proti semantiki RedaguvatiSintaksis movi opisuye formu dopustimoyi programi ale ne nadaye niyakoyi informaciyi pro znachennya programi abo rezultati vikonannya ciyeyi programi Znachennya sho nadayetsya kombinaciyi simvoliv obroblyayetsya semantikoyu Ne vsi sintaksichno pravilni programi ye semantichno pravilnimi Isnuye bagato sintaksichno pravilnih program prote voni utvoreni ne pravilno vidpovidno do pravil movi i mozhut v zalezhnosti vid specifikaciyi movi i obgruntovanosti realizaciyi en privesti do pomilki pri perekladi abo vikonanni U deyakih vipadkah taki programi mozhut proyavlyati neviznachenu povedinku Navit koli programa chitko viznachena v movi vona vse odno mozhe mati znachennya yake ne peredbachuvalosya avtorom Pid chas vikoristannya prirodnoyi movi yak prikladu mozhemo zrobiti visnovok sho nemozhlivo priznachati znachennya gramatichno pravilnomu rechennyu abo rechennya mozhe buti pomilkovim Bezbarvni zeleni ideyi lyuto splyat en gramatichno pravilno utvorene rechennya ale ne maye prijnyatnogo znachennya Dzhon odruzhenij holostyak gramatichno pravilno utvorene rechennya ale virazhaye znachennya yake ne mozhe buti pravdoyu Nastupnij fragment movi C sintaksichno korektnij ale vikonuye operaciyu yaka ne viznachena semantichno oskilki p ce nulovij vkazivnik operaciyi p gt real i p gt im ne mayut sensu complex p NULL complex abs p sqrt p gt real p gt real p gt im p gt im Abo prostishij priklad int x printf d x ye sintaksichno dopustimim ale ne ye semantichno viznachenim oskilki vikoristovuye neinicializovanu zminnu en Nezvazhayuchi na te sho kompilyatori dlya deyakih mov programuvannya napriklad Java i C budut viyavlyati pomilki neinicializovanih zminnih takogo rodu voni povinni rozglyadatisya yak semantichni pomilki a ne pomilki sintaksisu 6 11 Div takozh RedaguvatiShob shvidko porivnyati sintaksis riznih mov programuvannya pereglyante spisok z prikladami programi Hello world na riznih movah Sintaksis Prologu Sintaksis Perl en Sintaksis PHP en Sintaksis C en Sintaksis C Sintaksis Java en Sintaksis JavaScript Sintaksis Python en Sintaksis Lua Sintaksis Haskell en Primitki Redaguvati What is Syntax www computerhope com angl Procitovano 5 serpnya 2019 a b Friedman Daniel P Mitchell Wand Christopher T Haynes 1992 Essentials of Programming Languages vid 1st The MIT Press ISBN 0 262 06145 7 Smith Dennis 1999 Designing Maintainable Software Springer Science amp Business Media Aho Alfred V Monica S Lam Ravi Sethi Jeffrey D Ullman 2007 Compilers Principles Techniques and Tools vid 2nd Addison Wesley ISBN 0 321 48681 1 Section 4 1 3 Syntax Error Handling pp 194 195 Louden Kenneth C 1997 Compiler Construction Principles and Practice Brooks Cole ISBN 981 243 694 4 Exercise 1 3 pp 27 28 a b Semantic Errors in Java Michael Sipser 1997 Introduction to the Theory of Computation PWS Publishing ISBN 0 534 94728 X Section 2 2 Pushdown Automata pp 101 114 V nastupnih obgovorennyah mozhna znajti prikladi Perl and Undecidability LtU comment clarifying that the undecidable problem is membership in the class of Perl programs chromatic s example of Perl code that gives a syntax error depending on the value of random variable An Introduction to Common Lisp Macros Apl jhu edu 8 lyutogo 1996 Arhiv originalu za 6 serpnya 2013 Procitovano 17 serpnya 2013 The Common Lisp Cookbook Macros and Backquote Cl cookbook sourceforge net 16 sichnya 2007 Procitovano 17 serpnya 2013 Issue of syntax or semantics Posilannya RedaguvatiRizni sintaksichni konstrukciyi sho vikoristovuyutsya v movah komp yuternogo programuvannya Otrimano z https uk wikipedia org w index php title Sintaksis programuvannya amp oldid 38165795