Tijdens de semantische analysefase treedt dit soort fouten op. Dit soort fouten worden gedetecteerd tijdens het compileren.
De meeste compileerfouten zijn scope- en declaratiefouten. Bijvoorbeeld: niet-aangegeven of meervoudig aangegeven identificatiegegevens. Type komt niet overeen is een andere compileerfout.
De semantische fout kan optreden als u de verkeerde variabele gebruikt, de verkeerde operator gebruikt of de bewerking in de verkeerde volgorde uitvoert.
Een semantische fout kan zijn:
- Incompatibele soorten operanden
- Niet-gedeclareerde variabele
- Het niet matchen van feitelijke argumenten met formele argumenten
Voorbeeld 1: Gebruik van een niet-geïnitialiseerde variabele:
int i; void f (int m) { m=t; }
In deze code is t niet gedeclareerd en daarom wordt de semantische fout weergegeven.
Voorbeeld 2: Type incompatibiliteit:
int a = 'hello'; // the types String and int are not compatible
Voorbeeld 3: Fouten in expressies:
String s = '...'; int a = 5 - s; // the - operator does not support arguments of type String