Синтакса и семантика¶
Да би на неком рачунару написали, превели и извршили програм, неопходно је дефинисати шта су исправни програми и шта раде наредбе унутар тих програма. Лексика се бави описивањем основних градивних елемената програмских језика, а синтакса начинима комбиновања тих основних елемената у исправне програме. Питањем значења програма бави се семантика програмских језика.
Лексика, синтакса и семантика изучавају се и за природне језике. Основни лексички елементи природних језика су речи, при чему се разликује неколико различитих врста речи, нпр. именице, глаголи, придеви…, где речи могу имати различите облике, нпр. падеже, времена…. Задатак лексичке анализе природног језика је да идентификује речи у реченици и сврста их у одговарајуће категорије. Програми су представљени низовима карактера. Појединачни карактери се групишу у недељиве целине које представљају основне лексичке елементе програма. На пример:
if (a < 1)
b = 2;
У овом кôду, разликују се: кључна реч if
, заграде (
и )
, оператори <
и =
, променљиве a
и b
, вредности 1
и 2
и интерпункција ;
. Лексиком
програма бави се део компајлера који се назива лексички анализатор.
Синтакса одређује начине на које појединачне речи могу да креирају исправне реченице природних језика, односно, исправне програме у случају програмских језика. Синтакса дефинише релације између елемената програмског језика пружајући описе исправних програма. Синтакса се бави само формом и структуром програмског језика без разматрања значења. У литератури, синтакса програмског језика представља се одређеним метајезицима, синтаксним дијаграмима или бинарним стаблима. Синтаксом програма бави се део компајлера који се назива синтаксни анализатор.
Семантика придружује значења синтакно исправним елементима језика, односно, у случају програмских језика, за дати програм описује акције дефинисане тим програмом. За претходни пример може се придружити значење:
Ако је вредност променљиве a мања од 1,
онда променљивој b додели вредност 2.
Неке семантичке коректности програма се могу проверити током превођења програма (статичка семантика), док се друге могу открити тек у фази извршавања програма (динамичка семантика).
Прагматика језика говори о изражајности језика и о односу различитих начина за исказивање истих ствари. Прагматика се бави питањима практичне примене програмских језика попут лакоће програмирања, методологије програмирања, ефикасности у примени итд.