Section courante

A propos

Section administrative du site

Référence des messages d'erreurs

Si le compilateur détecte une erreur dans le programme G-Pascal, il renverra l'un des 36 messages d'erreur. Les messages apparaissent en anglais, comme indiqué ci-dessous. Une flèche vers le haut indiquera le symbole en cours de traitement lorsque l'erreur a été détectée. Si le compilateur a détecté la fin du programme de manière inattendue, la flèche pointera vers le dernier symbole du programme (par exemple si le dernier point (.) est manquante). Dans certains cas, l'erreur se trouvera dans le symbole vers lequel la flèche pointe réellement (par exemple, «Undeclared Identifier» ou «Number out of range»). Cependant, dans de nombreux cas, l'erreur sera une erreur d'omission (par exemple, le message «; expected» signifie généralement qu'un point-virgule a été omis à la fin de la ligne précédente). Dans ces cas, le message d'erreur fait généralement référence à un problème dans la déclaration ou la clause précédente. Par conséquent, si la signification d'une erreur n'est pas évidente, énumérez et examinez attentivement les dix dernières lignes avant et y compris la ligne contenant l'erreur. Toutes les erreurs sont fatales - en d'autres termes, dès qu'une erreur se produit, la compilation est arrêtée et le compilateur retourne automatiquement à l'éditeur pour que l'erreur soit corrigée. Comme G-Pascal compile très rapidement la détection et la correction des erreurs est un processus rapide et facile. La liste des messages d'erreur ci-dessous est conçue comme un guide des circonstances habituelles entourant une erreur donnée - ils devraient aider à comprendre une erreur particulière. Les messages d'erreur étant en majuscules et minuscules, le compilateur bascule automatiquement l'ensemble de caractères en majuscules et minuscules avant d'afficher les erreurs.

Erreurs de compilation

Message Description
= expected Ce message d'erreur permet d'indiquer que le compilateur traite une déclaration CONST et attend un signe «=» entre le nom constant et sa valeur. (par exemple CONST TRUE=1;).
:= expected Ce message d'erreur permet d'indiquer que le compilateur traite une instruction d'affectation ou une instruction FOR et attend un «:=» pour suivre le nom de la variable. (par exemple K: 1;).
; expected Ce message d'erreur permet d'indiquer que le compilateur attend un point-virgule. Il manque probablement à la fin de la déclaration précédente.
; or END expected Ce message d'erreur permet d'indiquer que le compilateur traite une instruction composée, c'est-à-dire une commençant par un BEGIN et se terminant par une END. Il est arrivé à la fin d'une instruction et attend désormais soit un point-virgule suivi d'une autre instruction, soit le mot END.
, expected Ce message d'erreur permet d'indiquer que le compilateur traite une liste de paramètres et attend maintenant une virgule, suivie d'un autre paramètre. (par exemple «CURSOR(6,7);»).
' or ; expected Ce message d'erreur permet d'indiquer que le compilateur traite une instruction CASE et attend qu'une virgule ou deux-points suive le sélecteur de cas, ou le compilateur traite une déclaration VAR et attend qu'une virgule ou deux-points suive l'identificateur précédent. (par exemple VAR X,Y,Z:INTEGER; );
( expected Ce message d'erreur permet d'indiquer que le compilateur est en train de traiter une instruction requérant que les paramètres soient fournis entre crochets (par exemple, les paramètres d'une procédure ou d'une fonction déclarée par l'utilisateur, ou les paramètres d'une procédure intégrée telle que CURSOR). Cependant, il ne trouve pas la parenthèse ouvrante.
) expected Ce message d'erreur permet d'indiquer que le compilateur a terminé le traitement d'une liste de paramètres et attend maintenant une parenthèse fermante, mais il n'en trouve pas. Cette erreur peut apparaître si un paramètre est mal tapé ou si une virgule devant séparer les paramètres est omise.
[ expected Ce message d'erreur permet d'indiquer que le compilateur traite un nom de tableau (ou une déclaration de tableau) et attend désormais un indice entre crochets.
] expected Ce message d'erreur permet d'indiquer que le compilateur a terminé le traitement d'un indice de tableau et attend maintenant le crochet carré de fermeture.
*) expected Ce message d'erreur permet d'indiquer que le compilateur a recalculé la fin du programme mais est toujours en train de traiter une remarque. La cause probable de ceci est que dans le programme une remarque a commencé par '(*' mais n'a pas été terminé par son '*)' correspondant.
. expected Ce message d'erreur permet d'indiquer qu'il n'y a pas de point suivant le END finale dans le programme.
BEGIN expected Ce message d'erreur permet d'indiquer que le compilateur traite un bloc et attend maintenant que le mot BEGIN marque le début des instructions dans ce bloc. S'ils n'ont pas déjà été déclarés, ce message signifie également que le compilateur acceptera également les déclarations CONST, VAR, PROCEDURE ou FUNCTION. Cette erreur est généralement provoquée soit en oubliant de mettre le mot BEGIN avant les instructions dans une procédure, une fonction ou un programme principal, soit en faisant une erreur dans les déclarations CONST ou VAR (comme l'orthographe CONST par exemple).
Compiler limits exceeded Ce message d'erreur permet d'indiquer la limite du compilateur a été atteinte. Vous devriez simplifier votre programme.
Constant expected Ce message d'erreur permet d'indiquer que le compilateur attend une constante, en d'autres termes l'un d'eux : un nombre (tel que 20), une constante hexadécimale (telle que $ABCD), une constante de chaîne de caractères (telle que "gladir"), ou un identifiant déclaré comme constante dans une déclaration CONST.
Data type not recognised Ce message d'erreur permet d'indiquer que le compilateur traite une déclaration VAR et n'a trouvé ni le mot INTEGER ni CHAR.
DO expected Ce message d'erreur permet d'indiquer que le compilateur traite une instruction WHILE et attend maintenant le mot DO. (par exemple WHILE X > 50 DO ...).
Duplicate identifier Ce message d'erreur permet d'indiquer que le programme tente d'utiliser le même nom deux fois pour un identificateur dans des circonstances illégales. Il est autorisé d'utiliser deux fois le même nom si une occurrence est une déclaration «globale» (au début du programme) et une autre déclaration est «locale» (à l'intérieur d'une procédure ou d'une fonction). Le même nom ne peut pas être utilisé deux fois dans le même «groupe» de déclarations, par exemple «VAR GLADIR,GLADIR:INTEGER;» serait une erreur.
Identifier expected Ce message d'erreur permet d'indiquer que le compilateur traite une déclaration CONST, VAR, PROCEDURE ou FUNCTION, ou le paramètre de la fonction ADDRESS, et attend désormais un identifiant fourni par l'utilisateur. (par exemple «VAR GLADIR»).
Illegal factor Ce message d'erreur permet d'indiquer que le compilateur traite une expression et trouve un facteur illégal. Cela peut être dû à une expression arithmétique construite illégalement (par exemple 5 + *), un paramètre manquant à une procédure ou une fonction (par exemple, WRITE()), ou une expression manquante là où une est attendue (par exemple IF THEN).
Illegal identifier Ce message d'erreur permet d'indiquer qu'un identificateur est rencontré dans un contexte dans lequel il n'était pas attendu.
Incorrect string Ce message d'erreur permet d'indiquer que le compilateur a détecté qu'un littéral de chaîne de caractères n'est pas là où il devrait être ou n'est pas terminé. Dans le cas des procédures LOAD et SAVE, cette erreur se produit s'il n'y a pas de nom de fichier où l'on est attendu, sinon l'erreur est causée par un symbole de guillemet d'ouverture sur une ligne mais aucun symbole de guillemet de fermeture correspondant.
Incorrect symbol Ce message d'erreur permet d'indiquer que le compilateur pense qu'il est à la fin du programme, mais il a trouvé plus de programmes après le point final.
Literal string of zero length Ce message d'erreur permet d'indiquer qu'une chaîne de caractères de longueur nulle (c'est-à-dire deux symboles de guillemets consécutifs: "") a été rencontrée.
Memory full Ce message d'erreur permet d'indiquer qu'il n'y a pas assez de place pour que vos P-codes suivent le programme source. Réduisez la taille de votre programme ou placez les P-codes à une adresse différente de celle par défaut à la fin du programme source.
Number out of range Ce message d'erreur permet d'indiquer que le compilateur traite un littéral décimal ou hexadécimal et a trouvé qu'il était trop grand (ou trop petit). L'intervalle autorisée pour les nombres décimaux est comprise entre -8388608 et +8388607. L'intervalle autorisée pour les entiers hexadécimaux est de $0 à $FFFFFF.
OF expected Ce message d'erreur permet d'indiquer que le compilateur traite une instruction CASE et attend maintenant le mot réservé OF. Par exemple, type d'enregistrement CASE OF ...).
Parameters mismatched Ce message d'erreur permet d'indiquer que le compilateur traite l'appel d'une procédure ou d'une fonction déclarée par l'utilisateur et a détecté que le nombre de paramètres fournis à l'appel de la procédure ou de la fonction ne correspond pas au nombre de paramètres déclarés pour la procédure ou la fonction.
Stack full Ce message d'erreur permet d'indiquer que la pile interne du compilateur a débordé en raison du traitement d'un trop grand nombre de procédures, fonctions ou expressions imbriquées. Ce message est très rare, mais s'il se produit, le problème peut être corrigé en réécrivant le programme avec moins d'imbrication. Une procédure imbriquée, par exemple, est une procédure dans une procédure dans une procédure,...
String literal too big Ce message d'erreur permet d'indiquer que le compilateur a rencontré un littéral de chaîne de caractères dans une expression, mais il comporte plus de 3 caractères. Les littéraux de chaîne de caractères de plus de 3 caractères ne sont autorisés que dans les instructions LOAD, SAVE et WRITE.
Symbol table full Ce message d'erreur permet d'indiquer que le programme a trop d'identificateurs de déclarés par l'utilisateur (en d'autres termes, les noms CONST, VAR, PROCEDURE ou FUNCTION). Il existe trois solutions possibles à ce problème. Tout d'abord, réduisez le nombre de variables si possible. Deuxièmement, réduisez la longueur des identificateurs (avec la commande "Remplace" de l'éditeur). Troisièmement, rendre les identificateurs en «local» aux procédures ou fonctions autant que possible. Les identificateurs locales (en d'autres termes, les déclarations CONST, VAR, PROCEDURE ou FUNCTION se trouvant à l'intérieur d'autres procédures ou fonctions) n'occupent de la place dans la table des symboles que pendant le traitement de cette procédure ou fonction. Chaque identificateur déclaré par l'utilisateur occupe 10 octets sur la table des symboles plus la longueur de l'identificateur. En d'autres termes, le mot GLADIR occuperait 16 octets sur la table des symboles - 10 plus 6. La longueur totale de la table des symboles est de 4096 octets donc il y a de la place pour 256 identificateurs si chacun est de 6 caractères.
THEN expected Ce message d'erreur permet d'indiquer le compilateur traite une instruction IF et attend désormais un THEN pour suivre l'expression conditionnelle. Par exemple IF A = 5 THEN ...).
TO or DOWNTO expected Ce message d'erreur permet d'indiquer que le compilateur traite une instruction FOR et attend désormais les mots TO ou DOWNTO. Par exemple FOR x := 1 TO 10 DO ...).
Type mismatch Ce message d'erreur permet d'indiquer que une incompatibilité de type. Cette erreur se produit rarement car G-Pascal autorise les opérations de type mixte en général. Par exemple, vous pouvez affecter une variable entière à une variable CHAR. Cependant, cette erreur se produira si le programme a) tente de lire une chaîne de caractères dans un tableau d'entiers, ou b) tente d'utiliser un nom de constant sur le côté gauche d'une instruction d'affectation.
Undeclared identifier Ce message d'erreur permet d'indiquer que l'identificateur vers lequel pointe la flèche vers le haut (↑) n'a pas été déclaré. Il est peut-être mal orthographié, ou aucune déclaration CONST, VAR, PROCEDURE ou FUNCTION n'existe pour lui. Tous les identificateurs doivent être déclarés avant d'être référencés, donc toutes les déclarations PROCEDURE et FUNCTION doivent précéder toute tentative de s'y référer.
Use of procedure identifier in expression Ce message d'erreur permet d'indiquer que le compilateur traite une expression et trouve le nom d'une procédure où le nom d'une variable, d'une constante ou d'une fonction doit apparaître.


Dernière mise à jour : Samedi, le 11 juillet 2020