![](http://gadget-info.com/img/difference-between/692/difference-between-syntax.jpg)
Süntaksi ja semantika vahel on mõned suhted, kus iga semantiline element on seotud vähemalt ühe süntaktilise üleviimisega ja teine tagab, et igal süntaktilisel esindusel on eristav tähendus.
Võrdluskaart
Võrdluse alus | Süntaksi | Semantika |
---|---|---|
Põhiline | Keele lubatud fraasid. | Fraaside tõlgendamine. |
Vead | Käsitletakse kompileerimise ajal. | Vastamisi runtime. |
Seos | Süntaktilisel tõlgendusel peab olema teatud eristav tähendus. | Semantiline komponent on seotud süntaktilise esindusega. |
Süntaksi määratlus
Programmeerimiskeele süntaksit kasutatakse programmide struktuuri tähistamiseks ilma nende tähendust arvestamata. Põhimõtteliselt rõhutatakse selle väljanägemisega programmi struktuuri, paigutust. See hõlmab eeskirjade kogumit, mis kinnitab programmis kasutatud sümbolite ja juhendite järjestust. Pragmaatiline ja arvutusmudel kirjeldavad programmeerimiskeele süntaktilisi komponente. Programmeerimiskeelte süntaksi täpsustamiseks välja töötatud tööriistad on korrapärased, kontekstivabad ja atribuutide grammatikad.
Kuid milline on grammatika kasutamine selles aspektis? Grammarid on tavaliselt ümberkirjutamise reeglid, mille eesmärk on programmide tuvastamine ja genereerimine. Grammatika ei tugine selle asemel arvutusmudelile, mida kasutatakse keele struktuuri kirjeldamisel. Grammatika sisaldab piiritletud grammatilisi kategooriaid (nagu nimisõna, verbifraas, artikkel, nimisõna jne), üksikisikuid (tähestike elemendid) ja hästi kujundatud reegleid, et täpsustada, millises järjekorras grammatiliste kategooriate komponendid peaks ilmuma.
Süntaksi analüüs on kompilaatori poolt teostatav ülesanne, mis uurib, kas programmil on õige seotud derivatsioonipuu või mitte.
Programmeerimiskeele süntaksit saab tõlgendada järgmiste formaalsete ja mitteametlike meetodite abil:
- Leksikaalne süntaks, mis määrab kindlaks põhisümbolite reeglid, mis hõlmavad identifikaatoreid, literaale, kirjavahemärke ja operaatoreid.
- Konkreetne süntaks määrab programmide tegeliku esitusviisi selle tähestiku sarnaste leksikaalsete sümbolite abil.
- Abstraktne süntaks edastab ainult olulise programmi informatsiooni.
Grammatika tüübid
- Kontekstivaba grammatikat kasutatakse kogu keele struktuuri väljaselgitamiseks.
- Regulaaravaldised kirjeldavad programmeerimiskeele leksikaalset ühikut (märgid).
- Atribuutide grammatikad määravad keele kontekstitundliku osa.
Semantika määratlus
Semantika terminit programmeerimiskeeles kasutatakse süntaksi ja arvutusmudeli vahelise suhte väljaselgitamiseks. Selles rõhutatakse programmi tõlgendamist, et programmeerija saaks seda kergesti mõista või prognoosida programmi täitmise tulemusi. Süntaksi-suunatud semantikana kasutatavat lähenemist kasutatakse süntaktiliste konstruktide kaardistamiseks arvutusmudelile funktsiooni abil.
Programmeerimiskeele semantikat saab kirjeldada erinevate meetoditega - algebraline semantika, aksiomaatiline semantika, operatiivsemantika, denotatsiooniline semantika ja tõlkesemantika.
- Algebraline semantika tõlgendab programmi algebra määratlemisel.
- Aksiomaatiline semantika määrab programmi tähenduse, ehitades väiteid assotsiatsiooni kohta, mis kinnipidab iga programmi täitmisel (st kaudselt).
- Operatiivsemantika võrdleb keeli abstraktse masinaga ja seejärel hinnatakse programmi olekute üleminekute järjestusena.
- Denotatsiooniline semantika väljendab programmi tähendust programmi olekus toimivate funktsioonide kogumi kujul.
- Tõlke semantika keskendub meetoditele, mida kasutatakse programmi tõlkimiseks teise keelde.
Peamised erinevused süntaksi ja semantika vahel
- Süntaks viitab programmeerimiskeeles kirjutatud programmi struktuurile. Teisest küljest kirjeldab semantika programmi mõistuse ja arvutusmudeli vahelist seost.
- Süntaktilisi vigu käsitletakse kompileerimise ajal. Seevastu on semantilisi vigu raske leida ja kohtumiste ajal kokku puutuda.
- Näiteks c + + puhul on muutuja "s" deklareeritud kui "int s", selle vormindamiseks peame kasutama täisarvu. Selle asemel, et kasutada täisarvu, oleme alustanud selle “Seitse” -ga. See deklaratsioon ja initsialiseerimine on süntaktiliselt korrektne, kuid semantiliselt vale, sest “Seitse” ei tähenda täisarvu.
Järeldus
Programmeerimiskeele süntaks on reeglite kogum, mis määrab koodi struktuuri või vormi, samas kui semantika viitab koodi tõlgendamisele või sümbolite, tähemärkide või programmi mis tahes osa sellega seotud tähendusele.