Синтакса и семантика израза


Синтакса израза представља правила помоћу којих се гради и проверава коректност израза у самом програму. Програмски језици су тако конструисани да рачунар може лако да уочава и упозорава на синтаксне грешке у програму.


На пример, ако у аритметичком изразу није затворена заграда, или ако није стављена ";" на крају наредбе, или није затворена витичаста заграда на крају блока наредби, апликација која их садржи неће моћи да се компајлира, а самим тим ни да се покрени јер ће се јавити грешке.
Такође, до синтаксне грешке може доћи ако оператор %, који даје остатак при дељењу, применимо на операнде реалног типа, из разлога што се он може примењивати искључиво на операнде целобројног типа.


Семантика израза одређује значење израза у програму, односно придружује значење синтаксно исправним изразима.
Неки аспекти семантичке коректности могу се проверити током превођења програма (на пример, да су све променљиве које се користе у изразима дефинисане и да су одговарајућег типа), док се неки аспекти могу проверити тек у фази извршавања програма (на пример, да не долази до дељења нулом у неком изразу).


Код семантичких грешака апликација је успешно компајлирана, приликом рада не пријављује никакве грешке, нити престаје са радом. Све је у реду, али апликација “само” не ради оно што треба да ради. Враћа погрешне резултате, не исписује податке... Ово су вероватно грешке које је најтеже открити јер су последице лошег дизајна апликације.
Честа грешка је коришћење оператора = уместо оператора ==, када желимо да испитамо да ли су неке две вредности једнаке. Тако израз x = y не представља исто што и израз x == y.

  • У првом изразу x = y променљивој x се додељује вредност променљиве y.
  • У другом изразу x == y проверава се да ли је вредност променљиве x једнака вредности променљиве y.

Сличне грешке се праве код оператора & и &&, као и код оператора | и ||, па је неопходно правити разлику између логичких оператора (&&, ||) и битовских оператора (&, |).