Syntaxe : Ensemble des règles grammaticales qui définissent la structure correcte d'un programme dans un langage donné.
- Compiler le programme avec un compilateur
- Observer les messages d'erreur de syntaxe
- Localiser les erreurs dans le code
- Appliquer les corrections nécessaires
| Erreur de syntaxe | Description | Correction |
|---|---|---|
| parenthèse manquante | def calcul_moyenne(notes: | def calcul_moyenne(notes): |
| deux-points manquant | for note in notes | for note in notes: |
La syntaxe définit la grammaire du langage (parenthèses, indentations, etc.)
Les erreurs de syntaxe sont détectées avant l'exécution du programme
Le programme ne s'exécutera pas tant que toutes les erreurs de syntaxe ne seront pas corrigées
Code corrigé : def calcul_moyenne(notes): ...
• Erreurs de syntaxe : Détectées par l'analyseur syntaxique
• Arrêt de compilation : Le programme ne compile pas tant que les erreurs existent
• Messages clairs : Les compilateurs fournissent des messages d'erreur précis
Sémantique : Signification et sens des instructions d'un programme, liés à la logique et à la cohérence des opérations.
| Erreur sémantique | Description | Conséquence |
|---|---|---|
| Division par zéro | a / b sans vérification | Erreur à l'exécution |
| Message incorrect | "x est inférieur" au lieu de "x est égal" | Sortie trompeuse |
La sémantique concerne la signification des instructions, pas leur structure
Les erreurs sémantiques ne sont pas détectées à la compilation mais peuvent causer des bugs
Il faut corriger la logique du programme, pas seulement la syntaxe
Erreurs sémantiques détectées et corrigées pour assurer la logique du programme
• Erreurs logiques : Le programme compile mais ne fonctionne pas comme prévu
• Détection difficile : Nécessite des tests approfondis et une analyse logique
• Validation : Comparaison des résultats attendus avec les résultats obtenus
Erreurs mixtes : Combinaison d'erreurs de syntaxe et sémantiques dans un même programme.
Ajouter les deux-points à la structure conditionnelle
Remplacer le rabais fixe par un rabais proportionnel
Rétablir l'indentation correcte pour le return
Programme corrigé avec syntaxe correcte et logique sémantique appropriée
• Correction progressive : Syntaxe d'abord, puis sémantique
• Tests complets : Vérifier la logique avec des cas d'utilisation variés
• Documentation : Commenter le code pour clarifier la sémantique
Analyse sémantique : Processus qui vérifie la cohérence sémantique d'un programme après l'analyse syntaxique.
| Aspect sémantique | Vérification | Résultat |
|---|---|---|
| Compatibilité de types | Variables numériques | ✓ Correct |
| Logique du programme | Gestion des stocks négatifs | ✓ Correct |
| Cohérence des opérations | Addition/soustraction correctes | ✓ Correct |
Les variables sont toutes de type numérique (compatibles)
Le programme gère correctement les cas de stocks négatifs
Le programme a un sens logique et cohérent
Le programme est syntaxiquement correct et sémantiquement cohérent
• Vérification des types : Assurer la compatibilité des opérations
• Logique du programme : Valider la cohérence des instructions
• Signification : Le programme doit accomplir sa fonction prévue
Comparaison : Distinction entre la structure grammaticale (syntaxe) et le sens (sémantique) d'un programme.
| Syntaxe | Sémantique |
|---|---|
| Structure grammaticale | Signification des instructions |
| Erreurs détectées à la compilation | Erreurs logiques ou de comportement |
| Contraintes formelles | Contraintes de sens |
| Indentation, parenthèses, etc. | Logique, algorithmique, résultats |
La syntaxe concerne la forme, la sémantique concerne le fond
Erreurs de syntaxe : bloquent la compilation
Erreurs sémantiques : permettent la compilation mais produisent des résultats incorrects
Corriger d'abord la syntaxe, puis valider la sémantique
Compréhension complète de la différence entre syntaxe et sémantique
• Syntaxe en premier : Un programme mal formé ne peut pas être exécuté
• Sémantique ensuite : Un programme correctement formé peut être logiquement incorrect
• Importance des deux : Un programme doit être à la fois syntaxiquement correct et sémantiquement cohérent
- Analyse lexicale : Découpage en tokens
- Analyse syntaxique : Vérification de la structure grammaticale
- Analyse sémantique : Vérification de la cohérence logique
- Génération de code : Production du code exécutable
- La syntaxe concerne la forme, la sémantique concerne le sens
- Les erreurs de syntaxe sont détectées par le compilateur, les erreurs sémantiques par l'analyse logique
- La syntaxe est universelle pour un langage, la sémantique peut varier selon le contexte
- Un programme syntaxiquement correct peut être sémantiquement incorrect