Erreur Syntaxique ou sémantique !!!

sihem_sima Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour !

Ma question est de savoir si cette erreur est une erreur sémantique ou une erreur syntaxique ?


SELECT age WHERE etudiant WHERE age >10

... merci d'avance

4 réponses

NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
Il est où le FROM ?
0
sihem_sima Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Oui je sais que c'est une erreur
Et Je veux savoir lorsque on remplacé FROM par WHERE Est-ce une erreur syntaxique ou bien sémantique
0
NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
Je dirais syntaxique, mais je ne vois pas bien la différence entre les 2.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Je dirais sémantique, histoire d'équilibrer la balance ^^

La syntaxe des éléments est correct, mais c'est la manière de les utiliser ainsi qui est fausse.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Je pense que c'est syntaxique
Relatif à la syntaxe, aux règles qui régissent l'agencement des mots et la construction des phrases.
Relatif à la syntaxe d'un programme ou d'un langage de programmation


car la sémantique .. c'est plus le "sens" (**comprendre la "compréhension") des mots (ou de la phrase)

Hors là.. ça ne change pas le sens de la requête... ça la rend totalement fausse.

Mais bon.... c'est surtout une erreur "bête" ...(pour ne pas dire autre chose... :-) )
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"Relatif à la syntaxe d'un programme ou d'un langage de programmation"
Justement la syntaxe est bonne... l'analyse syntaxique ne regarde que si les mots clés existent et les "variables" ont le bon format. C'est l'analyse sémantique qui va construire l'arbre et repérer les erreurs du genre, on ne peut avoir un WHERE sans FROM.

Effectivement c'est une erreur bête, mais si on devait faire une analogie avec le français, erreur syntaxique=erreur d’orthographe, erreur sémantique=erreur de grammaire.
Ici, c'est une erreur de grammaire, les mots existent individuellement, mais c'est la phrase dans sa globalité qui est incorrecte.
0
Utilisateur anonyme
 
Bonjour
l'analyse syntaxique ne regarde que si les mots clés existent et les "variables" ont le bon format
Faux, l'analyse syntaxique ne fait pas que ça. Elle s'occupe aussi de la structure de la phrase. Et la structure dépend le plus souvent de l'ordre des mots.
À titre indicatif, cette requête présentée à Mysql donne le message d'erreur :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE etudiant WHERE age >10' at line 1
Par contre, la requête
SELECT age FROM etudiant WHERE age >10
donne chez moi le message :
#1146 - Table 'essai.etudiant' doesn't exist
Il n'y a plus d'erreur de syntaxe, la structure de la commande est correcte. Il y a une erreur quand même car cette table n'existe pas chez moi, mais elle n'est pas signalée comme erreur de syntaxe.

[Edit] Complément : la syntaxe de SELECT est donnée (pour mysql en tout cas) de manière assez formelle dans le manuel : https://dev.mysql.com/doc/refman/5.7/en/select.html
On voit bien que la requête proposée par sihem_sima ne respecte pas cette syntaxe.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"You have an error in your SQL syntax;"
Si on va par là, aucun langage n'aura jamais d'erreur sémantique, car toutes les erreurs sémantiques seront signalées comme des erreurs de syntaxe, par abus de langage.

#1146 - Table 'essai.etudiant' doesn't exist
À ce niveau là, ça ne relève même plus de l'erreur de syntaxe ou de sémantique, c'est une erreur à l'exécution. Cette requête serait tout à fait valable utilisée sur une base de données qui possède cette table. Contrairement aux erreurs syntaxique/sémantique qui lèveront des erreurs pour des requêtes qui seront fausses dans tous les cas.

Remarque au passage : je ne pense pas que le langage SQL soit vraiment le plus adapté pour illustrer les différentes phases (syntaxique et sémantique) de compilation.
0
Utilisateur anonyme
 
Si on va par là, aucun langage n'aura jamais d'erreur sémantique
Je n'ai jamais parlé d'erreur sémantique. Je dis juste que certaines erreurs sont signalées comme des erreurs de syntaxe, d'autres non.

car toutes les erreurs sémantiques seront signalées comme des erreurs de syntaxe, par abus de langage Tu as raison, les gens qui ont programmé mysql sont des bricoleurs qui ne sont pas à un abus de langage près, c'est bien évident.

ça ne relève même plus de l'erreur de syntaxe ou de sémantique Même remarque qu'au premier point : je ne parle pas pas pas d'erreur de sémantique, je souligne juste le fait que le terme "syntaxe" n'apparaît plus dans le message, pour montrer que sql distingue bien les erreurs de syntaxe des autres.

je ne pense pas que le langage SQL soit vraiment le plus adapté pour illustrer... Je ne fais pas une réflexion générale sur les diverses phases d'analyse, je réponds à une question qui portait sur le SQL. Répondre en parlant de SQL ne me semblait pas inadapté.
0