Tämäntyyppinen virhe ilmenee semanttisen analyysin vaiheessa. Tämäntyyppiset virheet havaitaan käännösvaiheessa.
Suurin osa käännösaikavirheistä on laajuus- ja ilmoitusvirheitä. Esimerkiksi: ilmoittamattomia tai useita ilmoitettuja tunnisteita. Tyyppi mismatched on toinen käännösaikavirhe.
Semanttinen virhe voi syntyä käyttämällä väärää muuttujaa tai käyttämällä väärää operaattoria tai tekemällä toiminto väärässä järjestyksessä.
Jokin semanttinen virhe voi olla:
- Yhteensopimattomat operandityypit
- Ilmoittamaton muuttuja
- Varsinaisen argumentin ja muodollisen argumentin yhteensopimattomuus
Esimerkki 1: Alustamattoman muuttujan käyttö:
int i; void f (int m) { m=t; }
Tässä koodissa t on ilmoittamaton, minkä vuoksi se näyttää semanttisen virheen.
Esimerkki 2: Tyyppi yhteensopimattomuus:
int a = 'hello'; // the types String and int are not compatible
Esimerkki 3: Virheet lausekkeissa:
ketjutusmerkkijono javassa
String s = '...'; int a = 5 - s; // the - operator does not support arguments of type String